如何在同一状态下访问另一个模板中的$ scope? 在下面的代码中,我想从(通过使用)chart.html
访问控制器Grid中的函数 .state('demo.content', {
url: '',
views: {
'chart': {
templateUrl: './App/chart.html',
controller: 'Chart'
},
'grid': {
templateUrl: './App/grid.html',
controller: 'Grid'
}
})
答案 0 :(得分:0)
我建议不要直接在另一个范围内调用函数。我建议使用$ broadcast和$ on机制,其中一个控制器广播另一个控制器可以订阅的消息。
以下是一个例子:
var app = angular.module('myapp', []);
app.controller('controller1', ['$scope', '$rootScope', function ($scope, $rootScope) {
$scope.notify = function () {
$rootScope.$broadcast('click', 'heres the message');
};
}]).controller('controller2', ['$scope', '$rootScope', function ($scope, $rootScope) {
$scope.$on('click', function (event, data) {
$scope.message = data;
});
}]);
这里有一个完整的小提琴:http://jsfiddle.net/6dbgo6pt/2/。
文档在这里:https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope
有一个实际的功能绑定('&'绑定),但指令中有。假设你有类似的东西:
<div ng-controller='mycontroller'>
<div my-button-directive clickcallback='doSomething' />
</div>
然后在my-button-directive
内,你可以使用&#39;&amp;&#39;对clickcallback属性的绑定。这样您就可以从指令中调用doSomething()
范围内的mycontroller
。但就像我说的那样,我并不认为这种情况适用于你。
答案 1 :(得分:0)
要访问另一个范围并不是好的样式。特别是当范围被隔离时。这就是为什么我建议你使用AngularJs Events。