我正在使用此控件:http://blueimp.github.io/jQuery-File-Upload/angularjs.html以角度进行文件上传,一旦文件上传到我的服务器,我返回一个网址,并希望在成功回调中将其显示给客户端。正在使用的插件只是一个普通的jquery文件上传,但我提供了一个角度指令包装器。
以下是我定义回调的方法:
$scope.options = {
url: '/api/Client/',
type: 'PUT',
done: function (event, data) {
var scope = angular.element(this).scope();
scope.test = "doesn't work";
scope.$apply(function () {
scope.test = "this doesn't work either";
});
}
};
文件上传很好,并且调用了done函数但是我无法更新视图。我最初尝试只是改变范围,然后我意识到我需要$ apply()函数,但这也不起作用。
我也试过
$scope.options = {
url: '/api/Client/',
type: 'PUT',
done: function (event, data) {
$scope.test = "doesn't work";
$scope.$apply(function () {
$scope.test = "this doesn't work either";
});
}
};
这也行不通。我不确定为什么它没有更新我的视图,因为完成调用只是一个ajax成功事件,我没有看到这个特定的插件如何导致$ scope的任何问题。$ apply。我正在使用AngularJs 1.1.5,但我也尝试过1.0.7并且遇到了同样的问题。
答案 0 :(得分:11)
从我的评论中复制,以便更清楚地解决问题:
我设法弄清楚了问题。当使用他们的例子时,我有一个ng-controller的副本(他们的例子嵌套在我的另一个控制器中),即使两个都使用相同的控制器,它似乎只会更新嵌套控制器范围内的任何内容。删除重复的ng-controller属性时,一切正常。
答案 1 :(得分:1)
我以为我也会参与其中,因为我花了一整天来处理这个问题。
确保在HTML中将ng-controller应用于div包装器,而不是ul元素。