同一状态下另一个模板中的访问范围
access scope in another template in same state
如何在相同状态的另一个模板中访问 $scope?
在我下面的代码中,我想从(通过使用)chart.html
访问控制器网格中的函数
.state('demo.content', {
url: '',
views: {
'chart': {
templateUrl: './App/chart.html',
controller: 'Chart'
},
'grid': {
templateUrl: './App/grid.html',
controller: 'Grid'
}
})
我建议不要直接调用另一个作用域中的函数。我建议使用 $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;
});
}]);
完整 fiddle 此处: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
中,您可以在 clickcallback 属性上使用“&”绑定。这将允许您从指令中调用 mycontroller
范围内的 doSomething()
。但是就像我说的,我不认为这种情况适用于你。
当范围是 isolated.That 时,访问另一个范围并不好 style.Especially 这就是我建议您使用 AngularJs 事件的原因。
如何在相同状态的另一个模板中访问 $scope? 在我下面的代码中,我想从(通过使用)chart.html
访问控制器网格中的函数 .state('demo.content', {
url: '',
views: {
'chart': {
templateUrl: './App/chart.html',
controller: 'Chart'
},
'grid': {
templateUrl: './App/grid.html',
controller: 'Grid'
}
})
我建议不要直接调用另一个作用域中的函数。我建议使用 $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;
});
}]);
完整 fiddle 此处: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
中,您可以在 clickcallback 属性上使用“&”绑定。这将允许您从指令中调用 mycontroller
范围内的 doSomething()
。但是就像我说的,我不认为这种情况适用于你。
当范围是 isolated.That 时,访问另一个范围并不好 style.Especially 这就是我建议您使用 AngularJs 事件的原因。