当指令链接阶段中的属性不可用时,在指令中使用AngularJS控制器范围属性

时间:2014-02-09 19:22:12

标签: angularjs angularjs-directive angularjs-scope

我有一个调用指令的视图。在这个指令中,我想使用控制器范围的属性。但是,当指令链接函数运行时,此属性尚未设置,因为它是在资源调用的返回时设置的。

如果可以从资源结果中获取指令中的属性值,该如何使用?

我当然有:

        .directive('meImageUpload', ['$parse', '$compile', function ($parse, $compile) {
        return {
            restrict: 'A',
            scope: {
                imageUploadType: '=imageUploadType',
                imageUploadId: '=imageUploadId'
            },

<div me-image-upload image-upload-type="'quote'" image-upload-id="record.Id"></div>

但这会导致imageUploadId始终未定义。

1 个答案:

答案 0 :(得分:0)

据我了解你的问题,你试着和你做imageUploadId,但是它会迟到吗?这应该没问题,因为您与范围定义关联的属性以两种方式绑定。因此,您可以使用scope.$watch功能。

scope.$watch("imageUploadId", function (newId, oldId) {
    // here you can use the parameter id newId or read the new one from the scope
    doSomething($scope.imageUploadId);
}

如果控制器范围中的值(record.id)发生了变化,它也会在指令中自动更新,因为您将它们与imageUploadId: '=imageUploadId'连接起来。在这种情况下,您也可以使用简写imageUploadId: '=',因为它们具有相同的名称。