范围$指令中的watch返回未定义的属性值



我正在尝试设置一个指令

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}}就是在证明所设置的值和指令范围是正确的$当record-id属性发生更改时,watch会正确触发,但console.log会证明该值未定义。

我不确定我在这里错过了什么。我不知道这是否重要,但这一指令是在一个单独的指令中使用的。

原来angular不喜欢我像这样调用指令

<record-view recordId="{{currentRecordId}}"></record-view>

相反,它想让我这样称呼它

<record-view record-id="{{currentRecordId}}"></record-view>

我认为规范化可以让我像以前一样使用它,但显然情况并非如此

最新更新