Javascript 如果不响应模型更改,则为Ng
我正在一个angular应用程序中共同开发一个登录系统UI,我希望注册和登录菜单根据按钮的按下而显示。我可以用一个.on方法在控制器中实现这一点,但显然这是正确使用angular的糟糕做法 我的代码如下(去掉不必要的位):Javascript 如果不响应模型更改,则为Ng,javascript,html,angularjs,Javascript,Html,Angularjs,我正在一个angular应用程序中共同开发一个登录系统UI,我希望注册和登录菜单根据按钮的按下而显示。我可以用一个.on方法在控制器中实现这一点,但显然这是正确使用angular的糟糕做法 我的代码如下(去掉不必要的位): 登录内容 注册帐户 注册内容 我不知道我做错了什么,也不知道这是否是正确的方法。使用登录字段创建一个对象。在登录时使用它,这样模型就会得到更新 演示 var-app=angular.module('todoApp',[]); app.controller(“dobCo
登录内容
注册帐户
注册内容
我不知道我做错了什么,也不知道这是否是正确的方法。使用登录字段创建一个对象。在登录时使用它,这样模型就会得到更新 演示
var-app=angular.module('todoApp',[]);
app.controller(“dobController”、[“$scope”,
职能($范围){
$scope.user={};
}
]);代码>
待办事项清单
登录内容
注册帐户
注册内容
不要将ng model
放在您的第一节标签上
声明$scope.params={}
;在控制器中,然后将其参数login
设置为true
:
检查
注册帐户
登录内容
注册内容
登录名为:{{params.login}
如上所述,由于ngIf指令创建了隔离作用域,所以您需要在模型中添加一个点,否则对原语值所做的更改将不会“传播”回控制器
因此,在控制器中创建一个对象而不是原语,即
$scope.someModel={login:true}代码>
并在HTML中将其引用为“someModel.login”
。通过这种方式,您还可以摆脱ngInit,因为它不一定是一个很好的用例。ngIf创建独立的作用域,因此它不会更新控制器上的“login”。您的模型中需要一个点,即someModel.login。@Zyga,即:类似这样的东西是的,可能有更好的命名:)如果您了解我的意思,您实际上需要创建具有“login”属性的“login”对象。按钮应该位于部分之外有什么特殊原因吗?
<section ng-model="login" ng-init="login=true">
<section ng-if="login">
LOGIN CONTENT
<button ng-click="login = !login">Sign up for an account</button>
</section>
<section ng-if="!login">
SIGN UP CONTENT
</section>
</section>
<section ng-init="params.login = true">
<section ng-if="params.login">
<button ng-click="params.login = !params.login">Sign up for an account</button>
LOGIN CONTENT
</section>
<section ng-if="!params.login">
SIGN UP CONTENT
</section>
login is: {{params.login}}
</section>