2014-10-28 51 views
0

我的印象(正确,我的谷歌搜索显示),Javascript功能可以采取任何数量的参数,无论打算什么。为什么向DDO工厂函数添加参数会中断应用程序?

所以这是奇怪的是,我的工作指令,在这里

... 
module.directive('aye', function(){ 
      return { 
       restrict: 'AE', 
       replace: 'true', 
       template: "<p> Hi </p>" 
      }; 
    }); 
    </script> 
</head> 

<body ng-controller="myController"> 
    <div> 
     {{ airportsArray() }} 
    </div> 
    <div aye></div> 
</body> 
</html> 

但不是在这里过

module.directive('aye', function(injectables){ 
      return { 
       restrict: 'AE', 
       replace: 'true', 
       template: "<p> Hi </p>" 
      }; 
    }); 
    </script> 
</head> 

<body ng-controller="myController"> 
    <div> 
     {{ airportsArray() }} 
    </div> 
    <div aye></div> 
</body> 
</html> 

我只是去掉参数injectables(这是我在Angular's very own documentation找到)。为什么这会给我错误,如

Error: [$injector:unpr] http://errors.angularjs.org/1.2.15/$injector/unpr?p0=injectablesProvider%20%3C-%20injectables%20%3C-%20ayeDirective 

有人可以解释吗?

+0

在文件中,它表示注射剂,它表示您的注射剂,而不是字面注射剂。例如,如果您的应用程序中定义了名为injectables的服务,那么您的代码就可以工作。是否有意义? – 2014-10-28 11:24:45

+0

没有类似'injectables'的服务。文档只强调我们可以在指令定义函数中传递依赖关系。 – Chandermani 2014-10-28 11:27:06

回答

0

通过依赖注入角度传递这些值。并根据参数的名称确定要注入的内容(当进行缩小时可能会更复杂)。而在你上面的例子,你还没有确定一个组件(服务/工厂/价值/等),名称为“注射剂”,因此它显示你的错误是,它无法找到“注射”

//Create something that can be injected: 
module.service('fooService', function($http){ 
    /* ... some functions here ... */ 
}); 

//Inject this defined piece into your directive: 
module.directive('myDirective', function(fooService){ 
}); 

当angular需要创建一个“myDirective”的实例,它会看到它需要参数“fooService”,所以它会进入它的依赖解析器来找到它,然后将它作为参数传递给你的指令。

+0

你可以包含'injectables'的一个好定义的例子吗? – CodyBugstein 2014-10-28 11:37:02

+0

“injectables”只是一个参数的占位符,可以通过angular的依赖注入机制注入。话虽如此,我会在我的答案中举一个例子 – Brocco 2014-10-28 13:29:08

相关问题