首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在视图中创建并访问的变量未更新表单控制器: Angularjs

在视图中创建并访问的变量未更新表单控制器: Angularjs
EN

Stack Overflow用户
提问于 2015-09-22 17:43:31
回答 2查看 35关注 0票数 0

我之前在代码中有:

代码语言:javascript
复制
<a click="showText=true">

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

未在控制器作用域中定义/声明showText。

接下来,我必须添加一个$watch:

代码语言:javascript
复制
$scope.$watch("testCase",function(){
    $scope.showText = false;
});

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

然后我创建了一个切换函数:

代码语言:javascript
复制
<a click="toggle()">

toggle()对showText的当前值求反。这样做之后,$watch就能够很好地更新值。

有人能告诉我这是什么原因吗?

EN

回答 2

Stack Overflow用户

发布于 2015-09-22 18:03:00

http://jsfiddle.net/qjcqwhsw/

代码语言:javascript
复制
<div ng-app>
<a click="showText=true">
<div ng-show="showText"></div>
</div>

如果你想将变量保留在控制器中,这是可行的,如果你想添加监视,那么只需将它初始化为false,然后在添加时添加'showText‘,希望它能帮到你

票数 0
EN

Stack Overflow用户

发布于 2015-09-22 18:04:59

从angular documentation

作用域继承通常很简单,您甚至不需要知道它正在发生……直到您尝试将双向数据绑定(例如,表单元素、ng-model)到父作用域中定义的基元(例如,数字、字符串、布尔值)。它并不像大多数人期望的那样工作。发生的情况是,子作用域获得了自己的属性,该属性隐藏/隐藏了同名的父属性。这不是AngularJS正在做的事情--这是JavaScript原型继承的工作方式。新的AngularJS开发人员通常没有意识到ng-repeat、ng-switch、ng-view和ng-include都创建了新的子作用域,所以当涉及到这些指令时,问题经常会显现出来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32713618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档