Как получить значение ng-модели от другого контроллера в angularjs - PullRequest
0 голосов
/ 12 июня 2018

Я хочу получить доступ к значению модели date из другого контроллера и сделать запрос, передав это значение в объект json.Но этот ng-model находится в области действия контроллера DateParseCtrl, а этот controller находится внутри другого контроллера, называемого mainController.Как я могу получить доступ к этому значению и передать объекту json из mainController?PS: я просто хочу получить date значение из mainController.

index.html

<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

angular.module('myApp')
.controller('DateParserCtrl', function($scope, uibDateParser){
    $scope.format = 'dd/MM/yyyy';
    $scope.date = new Date();
});

mainController

angular.module('myApp')
.controller('mainController',  function($scope, $http){
    var date = $scope.date;
    $scope.getSomething = function(){
        $http({
            method: 'POST',
            url: 'url',
            data: {date: date}
        })
    }
});

Ответы [ 2 ]

0 голосов
/ 16 июня 2018

Другой подход заключается в предоставлении даты в качестве аргумента функции getSomething:

<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>

Затем используйте этот аргумент в главном контроллере:

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}
        })
    }
});
0 голосов
/ 12 июня 2018

С событиями

date-parse-ctrl.js

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

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}
        })
    }


});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...