我已经制作了一个自定义的Angular指令:
HTML - mydirective(data-datasource="mydirectivedata", data-updatefn="mydirectiveupdate")
控制器 -
$scope.mydirectivedata = //array of objects from API service call using $http
$scope.mydirectiveupdate = function(a, b) {}
指令 -
.directive('mydirective', function() {
return {
restrict: 'E',
replace: true,
scope: {
mydirectivedata: '=',
mydirectiveupdate: '&',
},
controller: function($scope) {
$scope.updatefunction = function(id, type) {
$scope.mydirectiveupdate()(id, type);
};
},
templateUrl: '/partials/mydirective.html'
}
})
部分 -
<li data-ng-repeat="type in datasource.types">
<input id="{{type.id}}" type="radio" name="{{$parent.datasource.id}}" src="" alt="{{$parent.datasource.id}}" aria-label="type.name" checked ng-value="true" data-ng-class="radio-selector" data-ng-model="type.isDefault" data-ng-change="updatefunction($parent.datasource.id,type)">
<label for="{{type.id}}"><span style="background-image: url(undefined)"></span>
<h2 data-ng-bind="type.name">type.name</h2>
<p data-ng-bind="{{type.price}} | number :2" class="price">{{type.price}}</p>
<p data-ng-bind="type.description">type.description</p>
</label>
</li>
我的要求是:
1.选择输入单选按钮后,触发updatefunction
,然后通过mydirectiveupdate
函数传递所需参数
问题是:
1.如果我在我的指令中使用replace: true
,则$scope.updatefunction
本身不会被触发
2.如果我不使用replace: true
,则会触发更新功能,但每次输入点击只会触发一次。第二次单击输入时,函数不会被触发!
HELP !!
答案 0 :(得分:0)
我不明白你帖子的第二行:
HTML -
mydirective(data-datasource="mydirectivedata", data-updatefn="mydirectiveupdate")
我想你的意思是:
<mydirective data-mydirectivedata="mydirectivedata" data-mydirectiveupdate="mydirectiveupdate" />
我也不知道是什么
部分 -
我认为这是你的指令的模板。如果是这样,则无法使用replace: true
,因为您没有父DOM元素。整个
<li data-ng-repeat="type in datasource.types">...</li>
代码中的<ul>
代码。
一旦你有数据源(这个HTML和部分),一旦这是mydirectivedata(指令定义)。检查您的示例,并考虑所有这些因素。