首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从angularjs中的另一个控制器获取ng-model值

如何从angularjs中的另一个控制器获取ng-model值
EN

Stack Overflow用户
提问于 2018-06-12 20:37:31
回答 2查看 812关注 0票数 0

我想从另一个控制器访问模型date的值,并发出一个在json对象中传递该值的请求。但是这个ng-model在控制器DateParseCtrl的作用域中,这个controller在另一个名为mainController的控制器中。如何从mainController访问此值并传递给json对象?Ps:我只想从mainController获取date的值。

index.html

代码语言:javascript
复制
<body ng-controller='mainController'>
    <datepicker date-format="dd/MM/yyyy" selector="form-control"
                ng-controller='DateParserController'>
         <input type="text" uib-datepicker-popup="{{ format }}"
                ng-model='date' ng-blur='getSomething()'/> 
    </datepicker>
</body>

date-parse-ctrl.js

代码语言:javascript
复制
angular.module('myApp')
.controller('DateParserCtrl', function($scope, uibDateParser){
    $scope.format = 'dd/MM/yyyy';
    $scope.date = new Date();
});

mainController

代码语言:javascript
复制
angular.module('myApp')
.controller('mainController',  function($scope, $http){
    var date = $scope.date;
    $scope.getSomething = function(){
        $http({
            method: 'POST',
            url: 'url',
            data: {date: date}
        })
    }
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-12 20:49:11

使用事件

date-parse-ctrl.js

代码语言:javascript
复制
angular.module('myApp')
.controller('DateParserCtrl', function($scope,$rootScope, uibDateParser){
    $scope.format = 'dd/MM/yyyy';
    $scope.date = new Date();
    var dat=$scope.data;
    $rootScope.$broadcast('sendDate',dat)
});

mainController

代码语言:javascript
复制
angular.module('myApp')
.controller('mainController',  function($scope, $http){
    $scope.$on('sendDate',function(event,data){
        $scope.dateFromCtrl=data;
    })
    $scope.getSomething = function(){
        $http({
            method: 'POST',
            url: 'url',
            data: {date: $scope.dateFromCtrl}
        })
    }


});
票数 1
EN

Stack Overflow用户

发布于 2018-06-16 06:02:56

另一种方法是将日期作为参数提供给getSomething函数:

代码语言:javascript
复制
<body ng-controller='mainController'>
    <datepicker date-format="dd/MM/yyyy" selector="form-control"
                ng-controller='DateParserController'>
         <input type="text" uib-datepicker-popup="{{ format }}"
                ng-model='date' ̶n̶g̶-̶b̶l̶u̶r̶=̶'̶g̶e̶t̶S̶o̶m̶e̶t̶h̶i̶n̶g̶(̶)̶'̶
                ng-blur='getSomething(date)' /> 
    </datepicker>
</body>

然后在主控制器中使用该参数:

代码语言:javascript
复制
angular.module('myApp')
.controller('mainController',  function($scope, $http){
    ̶v̶a̶r̶ ̶d̶a̶t̶e̶ ̶=̶ ̶$̶s̶c̶o̶p̶e̶.̶d̶a̶t̶e̶;̶
    ̶$̶s̶c̶o̶p̶e̶.̶g̶e̶t̶S̶o̶m̶e̶t̶h̶i̶n̶g̶ ̶=̶ ̶f̶u̶n̶c̶t̶i̶o̶n̶(̶)̶{̶
    $scope.getSomething = function(date){
        $http({
            method: 'POST',
            url: 'url',
            data: {date: date}
        })
    }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50817429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档