我想创建一个指令,根据id禁用一些UI元素。我正在ng-repeat元素中动态创建id。
要做到这一点,我正在使用指令。我的问题是当调用编译函数时,DOM仍然有标记,我的id属性看起来像{{iteration_object.id}}而不是“myObjectId” 这是一个例子
`http://jsfiddle.net/psLkyofu/
我尝试使用链接功能而不是编译,但我遇到了同样的问题。
欢迎任何帮助!
答案 0 :(得分:0)
在为指令指定范围之前,只会调用指令的编译功能一次。 执行的函数序列如下
链接函数是合适的,因为它以范围作为参数调用。
我使用了链接功能,但它确实有效 请检查 http://jsfiddle.net/psLkyofu/2/
var myApp = angular.module('myApp',[]);
myApp.directive('disableBasedOnCondition', function() {
return {
restrict : 'A',
link : function(scope,element, attr){
var aElements = $(element).find('input');
aElements.each(function(index, aElem) {
console.log(aElem);
var disabled = $(aElem).attr('id') === 'id2';
if (disabled) {
console.log('disabling element' + $(aElem).attr('id'))
$(aElem).attr('ng-disabled', 'true');
}
})
}
};
});
function MyCtrl($scope) {
$scope.name = 'Superhero';
$scope.testValues = [
{ linkValue: 'test1', id: 'id1', label: "this is link 1"},
{ linkValue: 'test2', id: 'id2', label: "this is link 2"},
{ linkValue: 'test3', id: 'id3', label: "this is link 3"},
];
}