scope.$watch with a directive returns 未定义的属性值
scope.$watch withing a directive returns attribute value of undefined
我正在尝试设置指令
project.directive('recordView', function () {
return {
restrict: 'E',
scope: {
recordId: '@'
},
templateUrl: '/scripts/templates/record-view-template.html',
controller: 'RecordViewController',
link: function (scope, element, attrs) {
scope.$watch('recordId', function (value) {
console.log(value);
if (value) {
scope.resp.RecordId = 0
scope.resp.RecordId = eval('(' + value + ')');
alert(scope.resp.RecordId);
}
});
}
}
});
我这样使用指令
<record-view recordId="{{currentRecordId}}"></record-view>
在我看来抛出 {{currentRecordId}} 证明设置了正确的值,并且指令 scope.$watch 在记录 id 属性更改时正确触发,但 console.log 证明值未定义。
我不确定我在这里遗漏了什么。我不知道这是否重要,但该指令在单独的指令中使用。
事实证明angular不喜欢我这样调用我的指令
<record-view recordId="{{currentRecordId}}"></record-view>
相反,它希望我这样称呼它
<record-view record-id="{{currentRecordId}}"></record-view>
我以为规范化可以让我像以前一样使用它,但显然不是这样
我正在尝试设置指令
project.directive('recordView', function () {
return {
restrict: 'E',
scope: {
recordId: '@'
},
templateUrl: '/scripts/templates/record-view-template.html',
controller: 'RecordViewController',
link: function (scope, element, attrs) {
scope.$watch('recordId', function (value) {
console.log(value);
if (value) {
scope.resp.RecordId = 0
scope.resp.RecordId = eval('(' + value + ')');
alert(scope.resp.RecordId);
}
});
}
}
});
我这样使用指令
<record-view recordId="{{currentRecordId}}"></record-view>
在我看来抛出 {{currentRecordId}} 证明设置了正确的值,并且指令 scope.$watch 在记录 id 属性更改时正确触发,但 console.log 证明值未定义。
我不确定我在这里遗漏了什么。我不知道这是否重要,但该指令在单独的指令中使用。
事实证明angular不喜欢我这样调用我的指令
<record-view recordId="{{currentRecordId}}"></record-view>
相反,它希望我这样称呼它
<record-view record-id="{{currentRecordId}}"></record-view>
我以为规范化可以让我像以前一样使用它,但显然不是这样