我有一个这样的输入表单:
<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;用户名无法读取)。
有任何线索吗?
答案 0 :(得分:2)
通常,在AngularJS控制器中,如果不在$ scope对象上隐式创建属性,则在绑定元素尝试更新它之前不会定义它。这只是AngularJS的工作原理和动态Javascript的本质。如果尚未定义,您是否需要前往酒店?从你的问题我假设你只是用控制台刺激它。如果你确实需要在函数定义之前使用它,请在Javascript中使用OR逻辑运算符,由两个管道字符表示:
$scope.userLogin || '';