在“提交”之后我试图隐藏我的表单.我想用ng-if来做.单击“查看”按钮可以打开和关闭表单,但它不适用于“添加”按钮.这是什么原因?
我创建了一个JSfiddle. Link to JSFiddle.
我的表格:
<form name="userAddForm" ng-submit="something()" class="form-horizontal" role="form"> <div class="form-group"> <label class="col-md-2 control-label">Username</label> <div class="col-md-3"> <input name="username" ng-model="user.username" class="form-control" ng-required="true" placeholder="Username" type="text" /> </div> </div> <div class="form-group"> <label class="col-md-2 control-label">Password</label> <div class="col-md-3"> <input name="password" ng-model="user.password" class="form-control" placeholder="Password" type="password" ng-required="true" /> </div> </div> <button ng-disabled="userAddForm.$invalid" type="submit" ng-click="add=!add" class="btn btn-success"> <span class="glyphicon glyphicon-ok"></span> Add </button> </form> </div>
解决方法
请不要使用$parent!
使用适当的原型继承.
它不起作用的原因是因为你通过使用ngIf创建一个新的范围.
它不会创建隔离范围,因此您不必担心这一点.
当您传递primitive时,Javascript将在新范围的原型上“隐藏”该值.
因此,它不再直接引用父范围中的值.
How do you get around that?
add a dot
这粗略地转化为;使用对象并绑定到该对象的属性.对象不会被遮蔽,因为它们不是原始对象.你得保留参考,它只是工作™.
jsfiddle