javascript - 为什么使用 javascript 编辑输入文本不更新 angularJs 变量?

标签 javascript forms angularjs

我想加载一个文本文件,并通过将文件复制到输入文本来将该文件的文本放入 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;
    };
}

输入字段绑定(bind)到 AngularJS 变量:

<input type="text" ng-model="jsontext" id="jsontext" />

但是只有当我手动更改文本输入上的某些内容时,变量才会更新,以进行测试:

http://jsfiddle.net/uuuW6/

最佳答案

我不知道您通过 input_fiddle 指的是什么,但我看到您只是试图将更改处理程序绑定(bind)到某些输入。它不起作用的原因是在 AngularJS 中,数据更改由 digest loop 处理。通过 watches .

要在不受范围限制的上下文中更改数据,您可以调用 $apply 来激活摘要循环(或使用 apply 函数包装该代码),或者仅使用经典的 Angular 方式,并通过指令绑定(bind)更改处理程序,例如:

$scope.$apply(function () {
    input.value = this.result;
});

进一步阅读

关于javascript - 为什么使用 javascript 编辑输入文本不更新 angularJs 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22947633/

相关文章:

javascript - 使用 grunt-contrib-jasmine 运行单个规范

javascript - jvectormap 仅显示特定区域的标签

javascript - 检测返回顶部按钮上滚动到底部像素

html - 处理 POST 请求时的进度图标

angularjs - 在字典(对象)中使用ng-options进行迭代

javascript - 在元素的模糊处理程序运行之前模糊元素及其父元素?

从测试服务器移动到实时服务器时出现 PHP 和 mysql 错误

jquery - Django 表单与 jquery

json - 使用 angularjs 进行 django-rest 分页

javascript - AngularJS ng-重复 : Dynamically render/bind canvas inside loop