我发现了一些问题和示例,但它们都使用了$ scope,到目前为止我还没有在我的应用程序中使用$ scope。我试图在指令中的复选框被选中时执行控制器功能(ng-change)。
HTML
<div ng-app="myApp" ng-controller="Controller as ctrl">
<dir-select doIt="ctrl.doIt()" object="ctrl.object">
</div>
控制器和指令
var app = angular.module('myApp', []);
app.controller("Controller",[ function() {
var ctrl = this;
ctrl.object = {
name: "test",
selected: false
};
ctrl.doIt = function() {
alert("Doing It!");
};
}]);
app.directive('dirSelect', function() {
return {
restrict: 'E',
template: '<input type="checkbox" ng-model="object.selected" ng-change="doIt()">select',
scope: {
object: '=',
doIt: '&'
}
}
});
我错过了什么?
答案 0 :(得分:2)
请试试这个
<dir-select do-it="ctrl.doIt()" object="ctrl.object">
并在指令
中template: '<input type="checkbox" ng-model="object" ng-change="doIt()">select',
答案 1 :(得分:1)
Angular规范化属性名称。在HTML代码中,您应该使用以划线分隔的格式而不是驼峰式。只需将doIt="ctrl.doIt()"
更改为do-it="ctrl.doIt()"
即可。请参阅下面的代码。
<div ng-app="myApp" ng-controller="Controller as ctrl">
<dir-select do-it="ctrl.doIt()" object="ctrl.object">
</div>
答案 2 :(得分:0)
修改了您的HTML:
<div ng-app="myApp" ng-controller="Controller as ctrl">
<input type="checkbox" ng-change="ctrl.doIt()" ng-model="ctrl.object">
</div>