这是我的标记
<div id="username" ng-controller="quickUserAdd">
<h1>User</h1>
<input placeholder="your full name" ng-model="fullname">
<div ng-show="fullname">
<div>
<span class="big">Username</span>
<span class="small">{{username()}}</span>
</div>
<div class="password-{{passwordStatus()}}">
<input type="password" ng-model="password" placeholder="Password"/>
<span class="small">{{passwordStatus()}}</span>
</div>
</div>
</div>
而我的控制器:
var passwordStrengths = ["weak", "medium", "ok", "great"];
function quickUserAdd($scope)
{
$scope.password = "";
$scope.fullname = "";
....
}
如何将$ scope.fullname,$ scope.username和$ scope.password绑定到installation.user [0](安装是全局对象),以便在更改全名,用户名或密码时进行更新在installation.user [0]中(也是一个对象)?
最佳答案
我确信您对全局变量的问题了如指掌,因此在这里我假设您别无选择,在用例中,您需要访问全局定义的JavaScript对象。
在您的情况下,最简单的方法可能是将installation.user[0]
公开在控制器的作用域中,如下所示:
function quickUserAdd($scope) {
$scope.user = installation.user[0];
....
}
然后绑定到
user
对象的属性,如下所示:<input placeholder="your full name" ng-model="user.fullname">
<input type="password" ng-model="user.password" placeholder="Password">
这样,输入框中的任何更改都应立即传播到全局变量。
请注意,如果您想在AngularJS世界之外更改全局变量并仍然更新UI,则必须将此更改包装到Scope.$apply()方法中。
如果我可以提出更多建议:通常人们倾向于以大写字母命名AngularJS控制器,并添加Ctrl后缀,以便您的控制器可以命名为
QuickUserAddCtrl
;关于javascript - 将全局对象绑定(bind)到Angular中的 Controller ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13901417/