【发布时间】:2014-01-13 16:33:09
【问题描述】:
-
我正在尝试从我的旧代码中获取服务,但遇到了一个奇怪的错误,
injector()返回未定义:
- 另外,我正在尝试将新属性值设置回服务,这是否会在不使用 watch 的情况下反映到范围?
非常感谢,任何指点或建议都非常感谢。
【问题讨论】:
标签: angularjs
我正在尝试从我的旧代码中获取服务,但遇到了一个奇怪的错误,injector() 返回未定义:
非常感谢,任何指点或建议都非常感谢。
【问题讨论】:
标签: angularjs
您试图在 DOM 构建之前获取元素。这与在$(document ).ready() 之外运行 javascript 基本相同。所以这一行没有要获取的元素:
var elem = angular.element($('#myCtr'));
另外,顺便说一下,代替使用 jQuery,执行上述操作的另一个 Angular 选项是:
var elem = angular.element(document.querySelector('#myCtr'))
Angular 提供了一个等效于 $(document ).ready() 的函数,称为 angular.element(document).ready(),我们可以使用它。
但您还需要获取 scope 并在 scope.$apply() 中执行您的更改,以便 Angular 知道您已经更改了一些它应该知道的内容。
结合我们得到的两者:
angular.element(document).ready(function () {
var elem = angular.element($('#myCtr'));
//get the injector.
var injector = elem.injector();
scope= elem.scope();
scope.$apply(function() {
injector.get('cartFactory').cart.quantity = 1;
});
});
【讨论】:
scope.$apply。