如何将范围值从一个控制器提取到另一个控制器 的 HTML
<button class="btn btn-info" ng-click="setLanguage('en')">English</button>
<button class="btn btn-info" ng-click="setLanguage('de')">Danish</button>
的Javascript
.controller('demoCtrl', function($scope) {
$scope.setLanguage = function(language) {
$scope.language = language;
}
});
答案 0 :(得分:0)
您可以使用服务将一个控制器设置的值转换为另一个控制器。
.service('someService', function () {
this.language = null;
})
控制器
.controller('demoCtrl', function($scope, $rootScope, someService) {
$scope.setLanguage = function(language) {
$scope.language = language;
someService.language = language;
$rootScope.$broadcast('languageChanged');
}
});
在另一个控制器中
.controller('someCtrl', function($scope, $rootScope, someService) {
$rootScope.$on('languageChanged', function () {
$scope.language = someService.language;
}
});
答案 1 :(得分:0)
您可以借助服务在控制器之间共享数据,也可以使用$ emit()和$ broadcast()函数。
AngularJS $ on()中有一个侦听器函数,它将始终监听广播并发出事件。
上述函数的语法:
$scope.$emit(‘name1’,{}); //here you can send your data
$scope.$broadcast(‘name2’,{});
$scope.$on(‘name2’,function(event,args){
});
使用服务时,您只需将服务注入两个控制器并共享数据即可。
.service('someService', function () {
var self=this;
self.language = '';
});
.controller('firstCtrl', function($scope, someService) {
$scope.setLanguage = function(language) {
$scope.language = language;
someService.language = language;
}
});
.controller('secondCtrl', function($scope, someService) {
$scope.language = someService.language;
});
答案 2 :(得分:0)
如果我们想调用示例方法:
"test1 DIV controller"
来自:
"test2 DIV controller"
然后我们可以写上面的方法。
angular.Element(document.getelementByID('testDIV')).scope().example method name();
在test2DIVcontroller中。
例如:
<DIV ID="test1DIV" ng-controller="test1DIV controller"></DIV>
<DIV ID="test2DIV" ng-controller="test2DIV controller"></DIV>