1

环境:

在 Angular1.0.5、1.1.2 中尝试过

问题:

我的双向绑定不会立即更新我的视图,我必须在 $scope.is_pic 设置器之后调用 $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 生成的,这就是它看起来很棒的原因。

4

1 回答 1

4

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

于 2013-03-13T07:19:50.740 回答