AngularJS控制器$scope在ng if指令内不工作
我有一个登录表单,但由于某种原因,数据没有绑定在HTML和控制器之间。这是我的代码: home.html config.js 执行此操作时,AngularJS控制器$scope在ng if指令内不工作,angularjs,data-binding,2-way-object-databinding,Angularjs,Data Binding,2 Way Object Databinding,我有一个登录表单,但由于某种原因,数据没有绑定在HTML和控制器之间。这是我的代码: home.html config.js 执行此操作时,login函数的控制台输出为 username: undefined password: undefined is logged in: false 但是,如果我将以下内容添加到//此处添加的代码部分中的控制器中 scope.username = 'admin'; scope.password = 'admin'; 控制台提供以下信息: username
login
函数的控制台输出为
username: undefined
password: undefined
is logged in: false
但是,如果我将以下内容添加到//此处添加的代码
部分中的控制器中
scope.username = 'admin';
scope.password = 'admin';
控制台提供以下信息:
username: admin
password: admin
is logged in: true
i、 它工作正常。所以问题是:为什么我的视图(ng model=“…”
)没有绑定到控制器的作用域?我错过了什么
提前感谢您的回答。尝试绑定到对象:
$scope.myForm = {
userName: '',
password: '',
// ...
};
<input type="text" placeholder="Username" ng-model="myForm.username">
$scope.myForm={
用户名:“”,
密码:“”,
// ...
};
由于原型继承,
ng model
最初是从父作用域(您的控制器)读取的。但一旦用户键入,ng model
就会写入由ng if
创建的子作用域,该子作用域继承自父作用域。如果您绑定到一个对象(不是原语),您可以确定您将在同一个位置读写。只需访问$parent
范围$parent.username
,$parent.password
,您就可以像这样了
一些指令,如ng if
确实创建了子作用域,因此您需要访问父作用域。(Thx@FrankModica)。例如,如果您使用的是ng show
或ng hide
,则不需要访问$parent
范围(使用ng show
)
登录
你的ng controller=“HomeController”
放在哪里?它在myapp.config
部分,我可以确定它工作正常。你能添加更多代码吗?让我们看看您的控制器以何种方式绑定到视图。@lin,请检查更新。如果你需要更多信息,请告诉我。谢谢你的评论。这会起作用,但不推荐,因为它很脆。如果更新页面并添加新范围,您可能会遇到问题。太好了!,工作得很好。但是为什么我需要访问父范围?(什么是父范围?这是我第一次需要使用它)谢谢你,我会考虑你提到的可能的问题。我现在已经在编辑中看到了解释。再次感谢
scope.username = 'admin';
scope.password = 'admin';
username: admin
password: admin
is logged in: true
$scope.myForm = {
userName: '',
password: '',
// ...
};
<input type="text" placeholder="Username" ng-model="myForm.username">
<form ng-if="!loggedIn">
<input type="text" placeholder="Username" ng-model="$parent.username">
<input type="password" placeholder="Password" ng-model="$parent.password">
<button type="submit" data-ng-click="login()">Login</button>
</form>