[英]Why edit input text with javascript don't update angularJs variable?
我想加载一个文本文件,然后通过将文件复制到输入文本中,将该文件的文本放入AngularJS变量中。
该js将文本放在输入字段中:
document.getElementById('JSONFile').addEventListener('change', readFile, false);
function readFile(evt) {
var files = evt.target.files;
var file = files[0];
var reader = new FileReader();
var input = document.getElementById('jsontext');
reader.readAsText(file);
reader.onload = function () {
input.value = this.result;
};
}
输入字段绑定到AngularJS变量:
<input type="text" ng-model="jsontext" id="jsontext" />
但是仅当我手动更改文本输入中的内容以进行测试时,变量才会更新:
我不知道您通过input_fiddle
指的是什么,但我看到您只是想将更改处理程序绑定到某些输入。 它不工作的原因是,在AngularJS,数据的变化是由处理摘要循环通过手表 。
要在不受范围限制的上下文中更改数据,可以调用$apply
激活摘要循环(或使用apply函数包装该代码),或仅使用经典的Angulary方法并绑定更改处理程序通过指令,例如:
$scope.$apply(function () {
input.value = this.result;
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.