有一个常见错误错误:[$ injector:unpr]未知提供者:$ scopeProvider< - $ scope< - methodService

时间:2015-12-08 19:21:20

标签: angularjs onsen-ui

我的代码如下:

(?<quantity>[\s\S]*?)[A-Z](?<metal>[\S]*?)\sfor\s(?<value>[\d]+?)\sDollar

出现错误错误:[$ injector:unpr]未知提供者:$ scopeProvider&lt; - $ scope&lt; - methodService

有谁知道原因以及如何解决?

1 个答案:

答案 0 :(得分:0)

你误解了两件事:

  • 如评论中所述,$ scope是一个特殊变量,只能在控制器中注入
  • 控制器中注入的范围对象对于每个控制器都是不同的。它与对象的实例不同。 Angular是这样构建的:你有一个$ rootScope。每个其他$ scope都继承自$ rootScope或另一个$ scope。这是树的层次结构。由于继承,您可以检索存储在父$ scope中的数据。

我的建议:不要存储$ scope,不要垃圾邮件$ rootScope。只需将您需要的内容存储在控制器的$ scope中,并按如下方式正确调用工厂层:

$scope.myObjectToCreate = {};//object that wll be field in a form
$scope.createObject = function(){
    myService.create($scope.myObjectToCreate);
}
//or 
$scope.createObject = function(object){
     myService.create(object);
}
// but NEVER DO THIS
$scope.createObject = myService.create;

最后一点是关于将要更改的函数的范围,函数thismyService.create的每次使用都会使其崩溃。因为这会引用$scope而不是myService