这是我的标记

    <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/

10-16 00:13