2
我想从我的遗留代码获得服务,并运行到一个奇怪的错误与
injector()
返回undefined:注射器返回未定义的值?
- 此外,我试图将新的属性值返回到服务,这将反映到范围而不使用手表?
非常感谢你,任何指针或建议,非常感谢。
我想从我的遗留代码获得服务,并运行到一个奇怪的错误与injector()
返回undefined:注射器返回未定义的值?
非常感谢你,任何指针或建议,非常感谢。
您正在尝试在构建DOM之前获取该元素。这与在$(document).ready()
之外运行JavaScript基本相同。所以这条线没有元素获得:
var elem = angular.element($('#myCtr'));
另外,顺便说一下,而不是使用jQuery,对于上面做另一个角度的选择是:
var elem = angular.element(document.querySelector('#myCtr'))
角度提供了一个相当于$(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;
});
});
喜KayakDave,非常感谢你的帮助。在这种情况下,我试图说明我的情况,我试图操作角码(从遗留代码部分)以外的服务数据,这就是为什么我试图使用该元素来抓取注入器的原因。所以我想你是对的,dom还没有被构建,也许我可以通过将代码放入控制器外部的超时模块来进行模拟。 – mr1031011
有没有可能有角度调用你的遗留代码,并让它知道Angular已完成自举? – KayakDave
当然,如果angular在引导完成时有一个回调函数,我肯定可以把这段代码放到我的代码中。 – mr1031011