AngularJS:如果输入字段为空,为什么ng模型范围的变量不会显示在检查器中?

时间:2015-03-14 17:19:02

标签: angularjs-model

我有一个这样的输入表单:

<form name="userForm">
    <md-input-container>
        <label>Username</label>
        <input name="username" ng-model="userLogin.username" required>
        <div ng-messages="userLogin.username.$error" ng-show="userLogin.username.$dirty">
            <div ng-message="required">This is required!</div>
        </div>
    </md-input-container>

</form>
<div layout="row" layout-align="center">
    <md-button class="md-raised md-primary md-padding button-margin" ng-click="handleLoginResult()" ng-disabled="!userForm.$valid">Login</md-button>
</div>

问题是,在我不在输入字段中写任何内容(=用户交互)之前, userLogin.username 变量不会出现在$ scope中(I& #39; m使用AngularJS&#39; addon用于Chrome开发控制台)。 事实上,如果我尝试打印它,我会得到错误(userLogin未定义&gt;&gt;用户名无法读取)。

有任何线索吗?

1 个答案:

答案 0 :(得分:2)

通常,在AngularJS控制器中,如果不在$ scope对象上隐式创建属性,则在绑定元素尝试更新它之前不会定义它。这只是AngularJS的工作原理和动态Javascript的本质。如果尚未定义,您是否需要前往酒店?从你的问题我假设你只是用控制台刺激它。如果你确实需要在函数定义之前使用它,请在Javascript中使用OR逻辑运算符,由两个管道字符表示:

$scope.userLogin || '';