即使定义了ng-model,输入值也是未定义的
Input value is undefined even when ng-model is defined
我有一个AngularJS指令来显示或隐藏输入标签。当您从空输入开始并开始键入时,一切都很好。但是当输入预先填充了ng-model时,标签应该一开始就显示出来,并且开始隐藏。我检查了输入的值,没有定义。我肯定有一个明显的原因/解决办法,但我找不到。恰好
角:
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.customer = {
name: "Patrick"
};
});
app.directive('labelToggle', function () {
return {
restrict: 'A',
link: function (scope, element, attr) {
var thisLabel = element.find('label');
var thisInput = element.find('input');
scope.valueDefined = thisInput[0].value;
thisInput.on('keyup', function () {
if (this.value) {
thisLabel.addClass('show-label');
} else {
thisLabel.removeClass('show-label');
}
scope.valueDefined = thisInput[0].value;
});
}
};
});
HTML:
<div label-toggle class="input-wrap">
<label>Customer</label>
<input type="text" name="customer" placeholder="Customer" ng-model="customer.name">
</div>
<div>Value? {{valueDefined}}</div>
作为编写Plunker时出现的一个附带问题,为什么范围更新发生在一个按键之后?
一种简化的解决方案是直接使用ng-class来代替
http://plnkr.co/edit/aqYHWtzhilWrU2YpTscx?p =
预览 <label ng-class="{'show-label':customer.name}">Customer</label>
关于为什么你的代码不工作,模型可能没有更新当键下事件发生时(不工作与keyup我也试过),但如果你想知道什么是与ng-model的输入你可能想看看ngModelController,看看你如何可以要求ng-model,并得到一个处理当值更新或触发更改时,如果需要。
或者,当你只想在模型更改时调用控制器中的某些函数时,使用ng-change.
正如您所猜到的,这是一个非常明显的解决方案。
您已经将事件侦听器绑定到来自输入字段的keyup
事件。在keyup
事件触发之前,valueDefined
将是未定义的,因为它只在一个地方定义过(在事件侦听器函数中)。文本输出指向{{valueDefined}}
而不是ng-model值。
"为什么作用域更新发生在一个按键之后?"^^见上文。这都是由输入字段上的按键触发的。
正如shaunhusain提到的,您可以使用ng-class实现这一点。这里实际上不需要一个新的指令
相关文章:
- 尝试在PHP中回显输入文本时出现未定义的索引错误
- 函数内部未定义的输入值
- 角度过滤器可以工作,但将输入视为未定义并抛出错误
- 在Ionic中获得了未定义的输入值
- 断言var集通过<输入ng模型>不是未定义的
- 当输入键由jquery触发时,我的模型是未定义的
- "未捕获的类型错误:未定义的不是函数“;当向输入字段添加值时
- 未检索到输入字段的值:未定义的对象
- 尝试从通过jQuery构建的输入框中获取值时未定义
- 为什么 alert() 在输入不一致的位数后返回未定义
- 尝试复制粘贴输入字段的值时:无法读取属性'nodeType'的未定义
- 节点.js未定义:1 [语法错误:输入意外结束]
- 未定义 jQuery 输入参数
- 循环遍历输入数组以设置值,“无法设置未定义的属性值”
- 我在输入字段上触发绑定时将函数设置为未定义
- 当我想要设置对象属性时,输入中的未定义值
- 隐藏的输入值未定义
- 用户更改输入后,表单字段仍未定义
- 类型错误:在 OnsenUI 2 React 导航器中未定义输入页面
- 当通过javascript动态设置时,angularjs控制器内部未定义输入文本框的ng模型值