在视图中创建和访问的变量未更新形式控制器:Angularjs

时间:2015-09-22 09:43:31

标签: angularjs

我之前在代码中有:

<a click="showText=true">

<div ng-show="showText"></div>

未在控制器范围内定义/声明showText。

我接下来要添加$ watch:

$scope.$watch("testCase",function(){
    $scope.showText = false;
});

但是,这并不会导致div隐藏在视图上。此外,我{{showText}}但该值未更新到视图。

我后来创建了一个切换功能:

<a click="toggle()">

toggle()否定showText的当前值。执行此操作后,$ watch可以更新该值。

有谁可以告诉我这个的原因?

2 个答案:

答案 0 :(得分:0)

http://jsfiddle.net/qjcqwhsw/

<div ng-app>
<a click="showText=true">
<div ng-show="showText"></div>
</div>

如果你想在控制器中保留变量然后将它初始化为false,那么这是有效的 如果你想添加手表,那么你可以添加&#39; showText&#39; 希望它会帮助你

答案 1 :(得分:0)

从角度documentation

  

范围继承通常是直截了当的,你通常不会   甚至需要知道它正在发生......直到你尝试双向数据绑定   (即表格元素,ng-模型)到基元(例如,数字,字符串,   boolean)在子范围内从父范围定义。它   没有像大多数人期望的那样工作。怎么了   是孩子范围得到自己的隐藏/阴影的属性   同名的父属性。这不是AngularJS的内容   做 - 这就是JavaScript原型继承的工作原理。新   AngularJS开发人员通常没有意识到ng-repeat,ng-switch,   ng-view和ng-include都创建了新的子范围,所以问题就出现了   经常出现在涉及这些指令的时候。