我创建了一个自定义指令,其中包含一个隔离范围,该范围与封闭控制器中的函数以及对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