0

在我的情况下,角度指令的范围对象似乎“削弱”img src了。如果我起飞scope: { myDirectiveText: "=" },图像将显示。有了它,图像不显示。

这是指令

app.directive('myDirective', function(){
     return {
         restrict: 'A',
         scope: { myDirectiveText: "=" }, // having this will cause image to disappear.
         link: function (scope, element, attrs) {}
     };
});

这是我的html:

<div ng-repeat="anObject in myObjectsFromController">
   <img my-directive my-directive-text="'my text'" ng-src="{{ anObject.ImageUrl }}" />
</div>

因此,图像是从周围生成的ng-repeat。无论我使用ng-src还是 plain src,都没有关系。如果my-directive指定了范围“属性”,则图像不会显示。myDirectiveText 是 =、& 还是 @ 都无关紧要 - 图像仍然不会显示。

我的印象是属性指令不会影响它指定的元素的其他属性。我错过了什么或做错了什么?

4

1 回答 1

1

这看起来像一个孤立的范围问题。在指令中定义scope为哈希后,带有指令的元素上的所有属性现在都使用与指令相同的隔离范围,因此ng-src不再可以访问anObject父范围中的 。

有时最简单的选择是将指令拆分为两个单独的元素,隔离范围位于内部元素上。在您的情况下,我认为仅$parent.anObject.ImageUrl在绑定中使用是最简单的。

通常情况下,父作用域(from ng-repeat)上的属性可以通过作用域的原型继承来访问。隔离作用域没有这种继承,因此您需要显式使用$parent来访问它的属性。

于 2013-10-14T20:51:30.430 回答