3 回答
TA贡献1821条经验 获得超6个赞
要从隔离作用域指令内部在父作用域中调用控制器功能,请dash-separated在HTML中使用属性名称,如OP所述。
另外,如果要向函数发送参数,请通过传递对象来调用函数:
<test color1="color1" update-fn="updateFn(msg)"></test>
JS
var app = angular.module('dr', []);
app.controller("testCtrl", function($scope) {
$scope.color1 = "color";
$scope.updateFn = function(msg) {
alert(msg);
}
});
app.directive('test', function() {
return {
restrict: 'E',
scope: {
color1: '=',
updateFn: '&'
},
// object is passed while making the call
template: "<button ng-click='updateFn({msg : \"Hello World!\"})'>
Click</button>",
replace: true,
link: function(scope, elm, attrs) {
}
}
});
TA贡献2039条经验 获得超7个赞
在“测试”指令Html标记中,函数的属性名称不应为驼峰式,而应基于破折号。
所以-代替:
<test color1="color1" updateFn="updateFn()"></test>
写:
<test color1="color1" update-fn="updateFn()"></test>
这是angular区分指令属性(例如update-fn函数)和函数之间差异的方法。
- 3 回答
- 0 关注
- 603 浏览
添加回答
举报