0

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

<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 中(我正在使用 AngularJS 的 Chrome 开发控制台插件)。实际上,如果我尝试打印它,我会出错(未定义用户登录>>无法读取用户名)。

有什么线索吗?

4

1 回答 1

2

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

$scope.userLogin || '';
于 2015-03-14T17:27:57.400 回答