从ng-includes / ng-repeats更新控制器范围

时间:2016-05-17 09:07:08

标签: javascript angularjs angularjs-scope

我有一个关于角度范围的基本问题(可能之前已经回答过,但我找不到解决方案):

在我的应用程序视图中,多个ng-includes包含其他angular元素,这些元素在其中创建子范围(例如ng-repeats)。我想在一个控制器中管理它们,但是在ng-include模板中,我必须使用$ parent.variable_name来从控制器访问/更改变量。在ng-include中的ng-repeat内部,我必须使用$ parent。$ parent.variable_name来访问/更改它。这很难让人感到困惑,因为很难说,你的子范围有多深。

有没有更好的方法来引用子视图中的控制器变量和函数?

1 个答案:

答案 0 :(得分:0)

创建服务/工厂(服务/工厂是单身)。

angular.module('moduleName')
  .factory('factoryName', function() {
    return {
      variableName: 1
    };
  });

然后进入你的控制器(你可以在所有其他控制器中使用它)并使用工厂。

angular.module('moduleName')
  .controller('controllerName', function($scope, factoryName) {
    $scope.data = factoryName;
  });

然后在你的HTML中你可以简单地绑定它。

<div ng-controller="controllerName">
  {{ data.variableName }}
</div>

没有测试它。但它应该工作:)