<div class="col-md-12">
<h4>Correct email?</h4>
<div ng-switch on="changeEmail" >
<div class="row" ng-switch-default >
<div class="col-md-8">
<p>EMAIL</p>
</div>
<div class="col-md-4">
<button class="btn btn-danger btn-xs" ng-click="changeEmail = true;">Change</button>
</div>
</div>
<div class="row" ng-switch-when="true" >
<div class="col-md-8">
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter email">
</div>
</div>
<div class="col-md-4">
<button class="btn btn-primary btn-xs" ng-click="confirmChangedEmail()">Confirm</button>
</div>
</div>
</div>
</div>
控制器:
.controller('settingsController',function($scope, User){
$scope.partials = {
accounts : appPartials + "settings/accounts.html"
, plans : appPartials + "settings/plans.html"
, notifications : appPartials + "settings/notifications.html"
}
$scope.partial = $scope.partials.notifications;
$scope.confirmChangedEmail = function () {
// Submit email
}
})
我无法让开关工作,当我使用角度扩展时,我可以看到它不在同一范围内。有任何想法吗?我通过放settings.changeEmail
进行了快速修复,但是有效,只是不确定为什么?
答案 0 :(得分:3)
这有效http://plnkr.co/edit/xHfbt4Xgje0avCQpo3rx?p=preview和 这不是http://plnkr.co/edit/lJGQaNUefUfPK5dT7UBL?p=preview
以上原因无效的原因是changeEmail是在其自己的ng-switch范围内创建的 使用如下(使用$ parent) http://plnkr.co/edit/UOzqFLup5hdQhdqd5csZ?p=preview
或更好的方法是使用模型对象
$scope.user = {};
and then use user.changeEmail
答案 1 :(得分:2)
ng-switch
创建了自己的范围。
当您在changeEmail
中设置ng-click
时,这不会修改您想要的changeEmail
的值。如果您希望访问changeEmail
范围内的ng-switch
,请在其前面添加$parent
,我相信这应该有用。
像这样:
<div class="col-md-4">
<button class="btn btn-danger btn-xs" ng-click="$parent.changeEmail = true">Change</button>
</div>
强烈建议参考:https://github.com/angular/angular.js/wiki/Understanding-Scopes
答案 2 :(得分:1)
ngSwitch-匹配基于文字字符串值而不是表达式。
请注意,要匹配的属性值不能 表达式。它们被解释为要匹配的文字字符串值 反对。例如,ng-switch-when =&#34; someVal&#34;将与之相匹配 string&#34; someVal&#34;不反对表达的价值 $ scope.someVal。
http://docs.angularjs.org/api/ng/directive/ngSwitch
因此,您将ng-click更改为:
<button class="btn btn-danger btn-xs" ng-click="$parent.changeEmail = 'true'">Change</button>
这是一个有一切工作的傻瓜: