AngularJS:如果输入字段为空,为什么 ng-model scope 的变量没有显示在检查器中?
AngularJS: Why ng-model scope's variable is not shown in inspector if input field is empty?
我有这样的输入表单:
<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 变量才出现在 $范围(我正在为 Chrome 开发控制台使用 AngularJS' 插件)。
事实上,如果我尝试打印它,我会收到错误消息(未定义 userLogin >> 无法读取用户名)。
有线索吗?
通常,在 AngularJS 控制器中,如果您没有在 $scope 对象上隐式创建 属性 ,则在绑定元素尝试更新它之前,它不会被定义。这就是 AngularJS 工作方式的本质和动态 Javascript 的本质。如果 属性 尚未定义,您是否有理由需要访问它?从你的问题来看,我假设你只是用控制台来刺激它。如果您确实需要在定义函数之前在函数中使用它,请使用 Javascript 中的 OR 逻辑运算符,由两个竖线字符表示:
$scope.userLogin || '';
我有这样的输入表单:
<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 变量才出现在 $范围(我正在为 Chrome 开发控制台使用 AngularJS' 插件)。 事实上,如果我尝试打印它,我会收到错误消息(未定义 userLogin >> 无法读取用户名)。
有线索吗?
通常,在 AngularJS 控制器中,如果您没有在 $scope 对象上隐式创建 属性 ,则在绑定元素尝试更新它之前,它不会被定义。这就是 AngularJS 工作方式的本质和动态 Javascript 的本质。如果 属性 尚未定义,您是否有理由需要访问它?从你的问题来看,我假设你只是用控制台来刺激它。如果您确实需要在定义函数之前在函数中使用它,请使用 Javascript 中的 OR 逻辑运算符,由两个竖线字符表示:
$scope.userLogin || '';