AngularJs:为什么';当我使用ng click时是否更新ng开关?

AngularJs:为什么';当我使用ng click时是否更新ng开关?,angularjs,Angularjs,我尝试使用ng click更新ng switch中使用的变量,但ng switch似乎没有收到更改。请参见此处的示例: 我做错了什么?您遇到了范围继承问题。见: 固定版本:您只是没有切换。试试这个 <div ng-switch on="edit"> <div ng-switch-when=true> <a ng-click="edit=!edit">Cancel {{edit}}</a> </div> <di

我尝试使用
ng click
更新
ng switch
中使用的变量,但
ng switch
似乎没有收到更改。请参见此处的示例:


我做错了什么?

您遇到了范围继承问题。见:


固定版本:

您只是没有切换。试试这个

<div ng-switch on="edit">
  <div ng-switch-when=true>
    <a ng-click="edit=!edit">Cancel {{edit}}</a>
  </div>
  <div ng-switch-when=false>
    <a ng-click="edit=!edit">Edit {{edit}}</a>
  </div>
</div>

取消{{edit}
编辑{{Edit}

很有趣,如果我理解正确,ng switch会创建一个新的作用域和一个新的“编辑”变量,该变量在ng click中更改,但不是ng switch正在监视的旧“编辑”。但是为什么你的解决方案能解决这个问题呢?为什么不创建另一个“x.edit”?因为原型继承的工作方式。设置编辑属性时,它被附加到当前(即ngSwitch创建的)作用域,而父作用域(您的)不知道它。通过将属性放在编辑变量和作用域之间(即x.edit),可以强制它首先查找在正确作用域上找到的x,然后设置编辑属性。这对您不起作用吗?我测试了它,它对我有效。我误解你的问题了吗?