Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何向每个AngularJS$范围添加一致的变量或函数?_Javascript_Angularjs_Angularjs Directive_Angularjs Scope - Fatal编程技术网

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

Javascript 如何向每个AngularJS$范围添加一致的变量或函数?,javascript,angularjs,angularjs-directive,angularjs-scope,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,我制作了一个应用程序(使用AngularJS 1.X构建),它有很多指令,其中大多数都有自己的独立作用域。因此,对于每一个新的$scope我将下划线.js+下划线.string变量\uu和s分配给它们,如下所示: controller: function($scope){ $scope._ = _; $scope._s = s; $scope.foo = 'my-example-here'; } 然后在这些独立的作用域模板中做一些很酷的事情: <div ng-bind='s.

我制作了一个应用程序(使用AngularJS 1.X构建),它有很多指令,其中大多数都有自己的独立作用域。因此,对于每一个新的
$scope
我将
下划线.js
+
下划线.string
变量
\uu
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>

请试一试

编辑 此外,您还可以使用@georgeawg在评论中所述的方法。

尝试以下方法:

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>

请试一试

编辑
此外,您还可以使用@georgeawg在评论中描述的方法。

您尝试过$rootScope吗?还没有,但如何尝试?下面是我刚才尝试的
.directive('body',function($rootScope){return{controller:function(){$rootScope.derp=“foo!”;}}}}}}
。但是我无法从一个孤立的范围中看到
derp
。或者,它错了吗?John Papa风格指南为此推荐了常量。您尝试过$rootScope吗?还没有,但如何尝试?下面是我刚才尝试的
.directive('body',function($rootScope){return{controller:function(){$rootScope.derp=“foo!”;}}}}}}
。但是我无法从一个孤立的范围中看到
derp
。或者,这是错的。约翰·帕帕风格指南为此目的推荐了常量。嗨,这行得通,但通过
$rootScope
访问它是我唯一的选择吗?更新了答案。嗨,这行得通,但通过
$rootScope
访问它是我唯一的选择吗?更新了答案