我之前在代码中有:
<a click="showText=true">
<div ng-show="showText"></div>未在控制器作用域中定义/声明showText。
接下来,我必须添加一个$watch:
$scope.$watch("testCase",function(){
$scope.showText = false;
});但是,这并不会导致div在视图中隐藏。此外,i {{showText}},但值不会更新到视图中。
然后我创建了一个切换函数:
<a click="toggle()">toggle()对showText的当前值求反。这样做之后,$watch就能够很好地更新值。
有人能告诉我这是什么原因吗?
发布于 2015-09-22 18:03:00
http://jsfiddle.net/qjcqwhsw/
<div ng-app>
<a click="showText=true">
<div ng-show="showText"></div>
</div>如果你想将变量保留在控制器中,这是可行的,如果你想添加监视,那么只需将它初始化为false,然后在添加时添加'showText‘,希望它能帮到你
发布于 2015-09-22 18:04:59
从angular documentation:
作用域继承通常很简单,您甚至不需要知道它正在发生……直到您尝试将双向数据绑定(例如,表单元素、ng-model)到父作用域中定义的基元(例如,数字、字符串、布尔值)。它并不像大多数人期望的那样工作。发生的情况是,子作用域获得了自己的属性,该属性隐藏/隐藏了同名的父属性。这不是AngularJS正在做的事情--这是JavaScript原型继承的工作方式。新的AngularJS开发人员通常没有意识到ng-repeat、ng-switch、ng-view和ng-include都创建了新的子作用域,所以当涉及到这些指令时,问题经常会显现出来。
https://stackoverflow.com/questions/32713618
复制相似问题