是否可以从应用程序层次结构中较高的一个 Controller 共享作用域行为,以便它能够将不相关/未继承的作用域中的数据作为一种抽象且单独的“远程控制”进行管理?
这就是我在伪 Angular 中进行设置的方式:
//Looking to share the ManagedScope1 and ManagedScope2 "changeChannel()" behavior with this controller
<RemoteControlCtrl>
<ng-click="managedScope1.changeChannel()"></ng-click>
<ng-click="managedScope2.changeChannel()"></ng-click>
</RemoteControlCtrl>
//ManagedScopes inherit ChangeChannelCtrl scope behaviors
<ChannelChangeCtrl with $scope.changeChannel() method>
<ManagedScope1></ManagedScope1>
<ManagedScope2></ManagedScope2>
</ChannelChangeCtrl>
$scope.changeChannel()
方法在两个托管作用域中都继承,并且可以相应地作用于它们自己的数据。
最佳答案
您需要一个 ChannelService...
.service('ChannelService', function () {
return {
changeChannel: function (scopeData, callback) {
//change the channel
if (angular.isFunction(callback)) {
callback();
}
}
};
});
用法:
.controller('MyController', ['$scope', 'ChannelService', function ($scope, ChannelService) {
$scope.dataForChangingChannel = {};
$scope.changeChannel = function () {
//do UI stuff here
ChannelService.changeChannel($scope.dataForChangingChannel, function () {
//or UI stuff here, after the channel has been changed
});
}
}]);
关于javascript - AngularJS:与同级或后代范围共享范围行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18786911/