如何为每个AngularJS $范围添加一致的变量或函数?

时间:2016-03-16 09:27:46

标签: javascript angularjs angularjs-directive angularjs-scope

我制作了一个App(使用AngularJS 1.X构建),它有很多指令,其中大部分都有自己的隔离范围。因此,对于每个新的$scope我都会为其分配Underscore.js + Underscore.string变量_s,如下所示:

controller: function($scope){
  $scope._ = _;
  $scope._s = s;
  $scope.foo = 'my-example-here';
}

然后在孤立的范围模板中做一些很酷的事情:

<div ng-bind='s.humanize(some_id)'></div> # output: "My example here"

不幸的是,您无法访问这些范围中的全局变量。

那么,最终,如何为每个AngularJS $scope添加一致的变量或函数?

1 个答案:

答案 0 :(得分:0)

试试这个:

app.controller('MyCtrl', function($rootScope) {
    $rootScope.derp = "foo!";
});

app.directive('myDir', function($rootScope) {
    return {
        scope { ... },
        controller: function($rootScope) {
            console.log($rootScope.derp);
        }
    };
});

确保将ng-controller="MyCtrl"指令放在自定义指令的父DOM元素上,如下所示:

<div ng-controller="MyCtrl">
    <div my-dir></div>
</div>

请试试。

EDIT 此外,您可以在评论中使用@georgeawg所述的constants