2016-07-12 45 views
1

未知提供者錯誤: [$ 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> 

+1

請添加一些代碼或提供plunker – varit05

+0

你不能注入指令的控制器內......從RandomBusinessCtrl –

回答

2

why does my directive throws $unknown provider

因爲您正在嘗試向控制器注入指令。這沒有意義 - 你只能注入服務。

爲什麼指令不可注射?顯然,有人可能想要從控制器使用它的API?那麼,爲什麼是核心或Angular應用程序架構。指令作爲應用程序視圖層的一部分,不應直接與控制器交互。另一個需要了解的重要的事情是服務(你注入的)是有意單點的 - 當然,指令是不可能的。

在你的情況下,你不需要擔心它:指令在同一個模塊上註冊,所以它在模板中可用。

正確的控制器的定義是:

.controller('RandomBusinessCtrl' [ 
    '$scope', 'pickRandomBusinesses', 'BusinessViewModel', 'config', 
    function ($scope, pickRandomBusinesses, BusinessViewModel, config) { 

}); 
+0

是你的權利刪除postbutton。 –

+0

男人你是最好的..非常感謝..信息..雖然我失去了我的按鈕不能看到它的界面了 – henrybbosa

+0

很高興它是有用的。爲什麼你的按鈕不見了 - 你的應用程序出現了問題,從發佈的代碼中無法說明。 – dfsq

相關問題