我創建了一個自定義指令,其中包含一個隔離範圍,該範圍與封閉控制器中的函數以及對templateUrl的引用進行綁定。這裏是我的代碼如下所示:帶有templateUrl的指令中的函數參數
的HTML
<div ng-controller='MyCtrl as my'>
<custom-directive data='my.data' on-search="my.find(param1, param2)"></custom-directive>
</div>
指令
app.directive('customDirective', function() {
return {
restrict : 'E',
scope : {
data : '=data'
search : '&onSearch',
},
templateUrl : 'customDirective.html'
};
});
模板
<div>
<input ng-model='data.id'>
<a ng-click='find(param1, param2)'></a>
</div>
按功能find
收到的參數也存儲在data
。控制器data
綁定到指令而不是函數。我的日誌裏面的功能甚至不會顯示。
看來有很多不同的方法可以做到這一點,正如我在許多例子中看到的(見下文),但似乎沒有一個適用於我的案例。
實施例1:通過在模板
<div>
<input ng-model='data.id'>
<a ng-click='find.({param1: data.value1, param2: data.value2})'></a>
</div>
實施例2參數和值的映射:把一個鏈接在該指令
app.directive('customDirective', function() {
return {
restrict : 'E',
scope : {
data : '=data'
search : '&onSearch',
},
templateUrl : 'customDirective.html',
link : function(scope, elem, attr) {
scope.retrieve({param1: scope.data.value1,
param2: scope.data.value2});
}
};
});
實施例3:使用範圍$申請() ,$解析鏈接,但還沒有嘗試過
有人可以告訴我怎麼做,也可以向我解釋link
部分(我不明白那部分),如果你感覺生成如圖所示,顯示工作的替代方案。由於
(1)'find。(stuff)'是錯誤的語法 - 點不應該在那裏。 (2)在指令的範圍內是否有一個函數'find'?從設置中,該功能被稱爲「搜索」。 – 2014-10-22 09:33:59
@NikosParaskevopoulos(1)更正了'。',這只是一個錯字(2)函數find在控制器中,我將它作爲指令的搜索。 – menorah84 2014-10-22 09:40:32