ele*_*ead 6 dependency-injection underscore.js angularjs
我有一个奇怪的问题,无法在{{}}内或在ng-repeat和其他表达式中使用下划线函数.我的确切测试功能是
{{_.last([1,2,3,4])}}
Run Code Online (Sandbox Code Playgroud)
...在页面的HTML中.
只有在我的控制器中执行此操作时,才能看到正确的答案(4):
$scope._ = _;
Run Code Online (Sandbox Code Playgroud)
我试图将_作为工厂注入我的主应用程序模块,然后将其注入我的控制器,但它似乎并没有将它注入$ scope.
谁能看到我犯的错误?或者是否有一种机制可以阻止下划线库进入$ scope?我正在使用angular v.1.0.7和最新版本的下划线(不确定版本号的确切数字,但它是在过去的3周内).
Angular表达式({{expression}}
)是针对本地$ scope进行计算的,如果你定义了一个控制器,它就像函数一样是$ scope对象MyCtrl($scope){}
.
因此,当您_
在表达式中使用时,将_
根据$ scope计算,并且由于$ scope.does没有_
成员,因此表达式失败.
因此,_
在视图中使用的唯一内容是使用以下内容在$ scope对象上使用:$scope._ = _;
.
顺便说一下,当在浏览器上下文中使用时,下划线会添加_
为全局对象,因此它可以在整个JS中使用.这意味着没有必要"注入_
工厂".
归档时间: |
|
查看次数: |
2106 次 |
最近记录: |