注入器返回未定义的值?

mr1*_*011 3 angularjs

  1. 我正在尝试从遗留代码中获取服务并在injector()返回undefined时遇到奇怪的错误:

    检查这个plnkr


  1. 另外,我试图将新的属性值重新设置回服务,是否会在不使用手表的情况下反映到范围内?

非常感谢,非常感谢任何指针或建议.

Kay*_*ave 10

您正在尝试在构建DOM之前获取元素.这与在a之外运行javascript的问题基本相同$(document ).ready().所以这一行没有要获得的元素:

var elem = angular.element($('#myCtr'));
Run Code Online (Sandbox Code Playgroud)

顺便说一句,不是使用jQuery,而是执行上述操作的另一个Angular选项是:

var elem = angular.element(document.querySelector('#myCtr'))
Run Code Online (Sandbox Code Playgroud)

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;
   });
});
Run Code Online (Sandbox Code Playgroud)

更新了plnkr