【发布时间】:2016-08-01 03:42:07
【问题描述】:
所以我的 Angular 应用程序是一个庞然大物,所以我在这里粘贴相关部分只是为了看看 SO 的 Angular Gurus 是否可以发现任何可以帮助我的东西。
我的 HTML 代码如下:
<span class='span_class' ng-show='{{showHideBasedOnFlag(id)}}'>
...data...
</span>
在 Angular 中我有:
$scope.showHideBasedOnFlag = function(id)
{
var flag = getFlag(id);
if(flag == 1) return true;
if(flag == -1) return false;
return true;
}
我有三个跨度,其中第一个的标志为 1,因此应该显示,另外两个的标志为 -1,因此应该隐藏。这在页面加载时按预期工作(第一个跨度显示,其他两个被隐藏)。但是当我检查跨度 2 和 3 时,它们的 HTML 代码如下所示:
<span class='span_class ng-hide' ng-show="false">
所以我的第一个问题是:ng-hide 被 Angular 添加以及ng-show 也存在是否正常?当我的 HTML 中有代码 ng-show='{{showHideBasedOnFlag(id)}}' 时,两者都会被添加
其次,更重要的是:我有一个按钮,单击该按钮会将跨度 2 和 3 的标志更新为 1 的值。发生这种情况后,我预计跨度会显示出来,但他们没有。然后我显式调用showHideBasedOnFlag 函数和console.logged 以确保函数返回正确的真假。但是,我的 HTML DOM 没有任何变化,跨度仍然隐藏。
我对此感到头疼,并且已经没有想法了......非常感谢任何帮助!
【问题讨论】:
-
从您的代码中删除
{{}} -
@vinayakj:试过了,没有帮助:(
-
ng-show 接受一个表达式...类似于
ng-show="myVar",其中 myVar 为真或假 -
@WalksAway 我调用
showHideBasedOnFlag的函数返回true 或false...这不起作用吗? -
它会,但你需要像@vinayakj 建议的那样删除
{{}}
标签: javascript jquery html css angularjs