双向绑定不起作用,需要调用$ apply才能使其工作

时间:2013-03-13 06:03:55

标签: angularjs

ENV:

在Angular1.0.5,1.1.2

中尝试

问题:

我的双向绑定并没有立即更新我的视图,我必须在$ scope.is_pic setter之后调用$ scope。$ apply以便在浏览器中看到它。

http://jsfiddle.net/rV4LW/2/

上传图片,查看文件输入是否反映了文件名。在上面的文本框中键入,然后在ng-model上调用$ digest,然后神奇地将浏览器更新为控制器中的内容。

如果您更新" if"声明:

if (e.target.result.indexOf('data:image') !== -1) {
        $scope.apc.is_pic = true;
      return $scope.$apply();
    } else {
        $scope.apc.is_pic = false;
      return $scope.$apply();
    }
你会看到它突然发挥作用。为什么这对我失败了?

注意:javascript是由coffeescript生成的,这就是为什么它看起来很棒。

1 个答案:

答案 0 :(得分:4)

这是因为模型更新是在回调内完成的,即不在Angular上下文中。双向绑定仅在Angular中更新模型变量时有效,否则应显式调用$ apply方法。