【发布时间】:2014-10-22 09:19:39
【问题描述】:
我创建了一个自定义指令,该指令具有一个独立的范围,该范围绑定到来自封闭控制器的函数并引用了一个 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:在链接中使用 scope.$apply()、$parse 但没有尝试过
有人可以告诉我怎么做,还可以向我解释link 部分(我不明白那部分),如果你觉得很慷慨,请展示示例中所示的可行替代方案。谢谢
【问题讨论】:
-
(1)
find.(stuff)语法错误 - 点不应该在那里。 (2) 指令范围内是否有函数find?从设置中,该函数被称为search。 -
@NikosParaskevopoulos (1) 更正了 '.',这只是一个错字 (2) 函数
find在控制器中,我将其作为指令的search传递。
标签: angularjs