我有一个调用指令的视图。在这个指令中,我想使用控制器范围的属性。但是,当指令链接函数运行时,此属性尚未设置,因为它是在资源调用的返回时设置的。
如果可以从资源结果中获取指令中的属性值,该如何使用?
我当然有:
.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始终未定义。
答案 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: '='
,因为它们具有相同的名称。