javascript - AngularJS:与同级或后代范围共享范围行为

标签 javascript angularjs

是否可以从应用程序层次结构中较高的一个 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/

相关文章:

javascript - OctoberCMS Ajax 表单按取消后仍提交

javascript - AngularJS 设置清除输入字段时遇到问题

javascript - 阵列 Angular 动态滤波器

javascript - Angular/Node/Mongoose - 渲染帖子、评论、回复

javascript - 将按钮绑定(bind)到 javascript 函数

Javascript 正则表达式用特殊字符替换字符串

javascript - NVD3.js - 缺少 X 轴刻度

javascript - AWS Cognito 中的用户需要 MFA 时的身份验证流程

javascript - 简单的 ng-click 不起作用

javascript - AngularJS ngRepeat 语法错误