2014-01-16 197 views
1

更新爲我對問題有些疑惑。我想使用一個指令來將一個變量注入到該指令所使用的控制器中。我意識到我可以使用$ scope,但我沒有找到這個直觀的解決方案。從角度指令向角度控制器注入變量


本質上我想讓我的控制器將提議變量注入到它中。

我的預期用法:

<blah-directive proposal="proposal"></blah-directive> 

的指令(到目前爲止):

app.directive('blahDirective', function() { 
    return { 
     restrict: 'E' 
     , transclude: true 
     , replace: true 
     , scope: { 
      proposal: '=' 
     } 
     , templateUrl: 'blahTemp.html' 
     , controller: blahController 
    }; 
}); 

blahTemp.html

<form class="form-horizontal" role="form" name="myBidForm"> 
    **{{ proposal }}**  
</form> 

這顯示在$範圍值提議變量很好,但這不是我想要的。基本上我想定義就像我的控制器:

var blahController = function($scope, SomeOtherResource, proposal) { 


} 
+0

爲什麼要注入TE指令?您的指令使指令在範圍內可用。只要使用$ scope.proposal = .. – JvdBerg

+0

是的 - 我不認爲這個解決方案是控制器方面的明顯解決方案。如果有人拿起控制器,他們可能不會閱讀文檔,也不知道該變量是如何進入範圍的。 – akaphenom

+0

我不明白你想要做什麼。注入到控制器的範圍是獨立的範圍(因爲它是指令的控制器),那麼爲什麼要對父範圍進行雙向數據綁定? –

回答

3

如果要注入當地人到控制器中使用$controller

下面是一個例子(plunker):

app.directive('blahDirective', function ($controller) { 
    return { 
    restrict: 'E', 
    scope: { 
     proposal : "=" 
    }, 
    transclude: true, 
    replace: true, 
    templateUrl: 'blahTemp.html', 
    link : function (scope, elm, attrs){ 
     scope.proposal = {}; 
     var locals = { 
     $scope: scope , 
     proposal: scope.proposal 
     }; 
     $controller('blahController', locals); 
    } 
    }; 
}); 
+1

這看起來是我正在尋找。我得到一個「未知提供商proposalprovider」,所以我認爲我輸入了錯誤的東西。我知道這是我的最終目標 - 普朗克是有道理的,所以我需要深入瞭解我做錯了什麼。 – akaphenom

+0

檢查你的當地人的對象 –