未知提供商错误: [$ injector:unpr] http://errors.angularjs.org/1.4.3/ $ injector / unpr? P0 = postbuttonsProvider%20%3 C-%20postbuttons%20%3 C-%20RandomBusinessCtrl
这是我的代码:该指令定义如下:
angular.module('home', ['ngAnimate', 'ui.bootstrap','ngDialog'])
.directive("postbutton", function(){
return {
restrict: "E",
bindToController: true,
template: "<button>Post review</button>"
}
})
.controller('RandomBusinessCtrl',
['$scope','postbutton','pickRandomBusinesses','BusinessViewModel','config',
function ($scope,postbutton,pickRandomBusinesses,BusinessViewModel,config) {
});
我的HTML是:
<div ng-controller="RandomBusinessCtrl">
<span class="badge pull-right" style="background-color:#CB525B;" >
<postbuttons></postbuttons>
<!-- <button type="button" value="post_business" style="background-color:#CB525B; height:15px;border:0px;`" ng-click="postReview(random_business.id,user_id,rate,price,date_created,details)">Post review</button> -->
</span>
答案 0 :(得分:2)
为什么我的指令会抛出$ unknown provider
因为您正在尝试将inject命令注入控制器。它没有意义 - 你只能注入服务。
为什么指令不可注射?显然,人们可能希望从控制器中使用其API?那么,原因是核心或Angular应用程序架构。指令是应用程序视图层的一部分,不应直接与控制器进行交互。另一个需要理解的重要事项是,服务(你注入的内容)是故意单例 - 当然,指令不可能。
在您的情况下,您不必担心:指令已在同一模块上注册,因此可在模板中使用。
正确的控制器定义是:
SELECT p.*, n.name, n.lang
FROM products p
LEFT JOIN product_names n
ON (p.product_id = n.product_id AND n.name ILIKE 'nestle%')
WHERE
p.status IN ('A','1','5','9')
AND (p.producer ILIKE 'nestle%' OR n.name IS NOT NULL)
LIMIT 1