看看this Fiddle,我需要改变什么,使用我在HTML中定义的参数来评估模板中的表达式? SAVE按钮应该调用控制器的blabla()
- 函数,因为我通过了它?
var myApp = angular.module('MyApp',[])
myApp.directive('editkeyvalue', function() {
return {
restrict: 'E',
replace: true,
scope: {
accept: "expression"
},
template : '<div><label class="control-label">{{key}}</label>' +
'<label class="control-label">{{key}}</label>' +
'<input type="text" ng-model="value" />'+
'<button type="button" x-ng-click="cancel()">CANCEL</button>' +
'<button type="submit" x-ng-click="save()">SAVE</button></div>',
controller: function($scope, $element, $attrs, $location) {
$scope.save= function() {
$scope.accept();
};
}
}
});
我真的没有看透。谢谢你的帮助!
答案 0 :(得分:46)
您可以像Roy建议的那样设置与property: '='
的双向数据绑定。因此,如果您希望将key
和value
绑定到本地范围,则可以执行
scope: {
key: '=',
value: '='
},
由于您传递了这些值,因此您可以在指令的控制器中访问它们。但是如果你想在父范围的上下文中运行一个函数,这似乎是你想用accept
属性做的事情,那么你需要像这样告诉角度
scope: {
accept: "&"
}
现在,您可以通过save
方法调用通过accept
controller: function($scope, $element, $attrs, $location) {
$scope.save= function() {
$scope.accept()
};
}
这是jsfiddle
答案 1 :(得分:15)
scope: {
accept: "&"
}
对函数名称使用小写字母,否则不起作用。
答案 2 :(得分:1)
快速说明你不需要包装功能保存。只需在模板中调用它:
'<button type="submit" x-ng-click="accept()">SAVE</button></div>',
转换函数调用并按预期传递参数。
这简化了代码并使其更易于阅读。