在Angular 1.2+中使用ngShow \ ngHide

时间:2014-07-07 16:37:20

标签: angularjs ng-show ng-hide

我们最近从1.0.8开始转向Angular的最新稳定版本(撰写本文时为1.2.19)。

他们修复了一个相对nasty bug的孤立范围,唉我们(在不知不觉中)正在利用它。我已经设法修复了我们的应用程序,但现在遇到了(很多)类似的问题“如果这个属性在$ scope上,那么......”

我们遇到了这些问题,因为我们为ViewModel定义了一个通用结构。这意味着使用此结构的指令将在其范围上设置“非唯一”属性。在升级之前,由于这个bug,可以从它的孩子那里获得一个孤立的范围,但打破了原型继承。这正是我们的方法有效的原因。

这是关于我们的应用程序如何工作的非常简化的视图(在新旧Angular版本中均有效)

<a-directive-with-scope>
    I've put the variable foo on my $scope, see: {{foo}}
    <a-directive-with-scope>
        I've also put the variable foo on my $scope, see: {{foo}}
    </a-directive-with-scope>
</a-directive-with-scope>

现在的问题是,该指令并不总是在$ scope上设置相同的属性,它取决于从后端返回的内容。所以,让我们在内部指令中说我想检查那个范围是否具有id属性,即使该范围没有属性,它也将返回true,但是具有

在JavaScript中,您可以使用

解决这些问题
if($scope.hasOwnProperty("id")) { ...

但修复ngShowngHide指令的方法是否相同?目前ng-show="id"因原型继承而无效(正如我上面所解释的那样)。

0 个答案:

没有答案