javascript - 如何向每个 AngularJS $scope 添加一致的变量或函数?

标签 javascript angularjs angularjs-directive angularjs-scope

我制作了一个应用程序(使用 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 添加一致的变量或函数?

最佳答案

试试这个:

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>

请尝试一下。

编辑 另外,您可以使用constants正如@georgeawg 在评论中所描述的。

关于javascript - 如何向每个 AngularJS $scope 添加一致的变量或函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36031476/

相关文章:

javascript - Rxjs:轮询数据直到满足谓词

javascript - CSRFGuard : How to inject CSRF token into URL returned by AJAX call

javascript - 如何在 angularJs 1.3 中设置 cookie 过期时间?

javascript - AngularJs指令嵌入错误和@绑定(bind)

javascript - 在 Controller 中重用 Angular 事件

javascript - 具有可变函数名称的 addEventListener 语法

javascript - 正文未传递 Cookie 的 POST

angularjs - 使用路由器进行 Angular 2 测试 - 无法解析 'Router' 的所有参数

angularjs - 当触发时绑定(bind)到 Angular 带日期选择器事件

javascript - 如何在 AngularJS 中刷新页面?