Javascript AngularJS文本框值未定义
我创建了一个指令,它将textbox1的值复制到textbox2Javascript AngularJS文本框值未定义,javascript,angularjs,angularjs-directive,angularjs-scope,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,我创建了一个指令,它将textbox1的值复制到textbox2 function myCopyText() { return { restrict: 'A', link: function(scope, element, attr) { $('#textbox2').val($('#textbox1').val()) } } } 然后在文本框字段上: <input type="text" id="t
function myCopyText() {
return {
restrict: 'A',
link: function(scope, element, attr) {
$('#textbox2').val($('#textbox1').val())
}
}
}
然后在文本框字段上:
<input type="text" id="textbox1" ng-model="vm.textbox1" my-copy-text />
<input type="text" id="textbox2" ng-model="vm.textbox2" />
它工作正常,直到我提交了vm.textbox2
始终未定义的表单。但是如果我在textbox2上手动输入一个值,vm.textbox2
能够显示该值
我觉得奇怪的是,当指令进行赋值时,
vm.textbox2
的值总是未定义的,直到我手动输入一个值。这是出于设计。当您通过
input/change
事件,因此val()不会触发setViewValue
,因此不会更新模型值
此指令将模型/视图中的值复制到在“复制到”属性中传递的名称:
function replicateTo($parse) {
return {
scope: false,
require: 'ngModel',
restrict: 'A',
link: function(scope, element, attr, ngModelCtrl) {
var target = $parse(attr.replicateTo);
var angularRender = ngModelCtrl.$render;
ngModelCtrl.$render = function(){
angularRender();
target.assign(scope, ngModelCtrl.$viewValue);
};
ngModelCtrl.$viewChangeListeners.push(function(){
target.assign(scope, ngModelCtrl.$viewValue);
});
}
}
}
<input type='text' ng-model="vm.textbox1" data-replicate-to="vm.textbox2"/> <br>
函数replicateTo($parse){
返回{
范围:假,
要求:'ngModel',
限制:“A”,
链接:函数(范围、元素、属性、ngModelCtrl){
var target=$parse(attr.replicateTo);
var angularender=ngModelCtrl.$render;
ngModelCtrl.$render=function(){
角度渲染();
分配(范围,ngModelCtrl.$viewValue);
};
ngModelCtrl.$viewChangeListeners.push(函数(){
分配(范围,ngModelCtrl.$viewValue);
});
}
}
}
您正在使用相同的id=“textbox1”
进行两次输入$('textbox2')
正在查找一个元素,您忘记了#
来描述IDSorry,已经修改了上面的代码段。只是放在这里时有一些打字错误,但无论如何。。还是不行,这是故意的。为什么不对两个输入使用相同的ngModel?我已经在textbox上使用了ngModel。这是从textbox1到textbox2的绑定,但在提交表单时问题仍然存在vm.textbox2
仍然有一个未定义的
值,除非我在textbox2上手动输入一个值。我在这里进行了测试,它按预期工作,你能给我看一下你的html吗?不用担心,您错过了name属性,该属性是在submiteventname中生成查询字符串所必需的,因为我从ng模型获取值并通过ajax传递。正如我也说过的,我可以得到textbox1的值,但不能得到textbox2的值如果第一小提琴,根据我的解决方案是有效的,问题是什么?继续使用我的解决方案。第二个方法不起作用,因为正如我在回答中所说的,JQuery方法val不会触发模型中的更改