因此我们编写了一个指令,在从1.1.5升级到1.2.11后停止绑定。我不明白为什么会破坏。这是指令代码:
angular.module("ui.bootstrap.fileupload", []).directive('fileupload', ['$compile', function($compile) {
return {
scope: {
prompt: '=',
changePrompt: '=',
model: '='
},
replace: true,
templateUrl: '/app/partials/fileupload.html',
link: function($scope,element,attrs) {
$(element).fileupload();
$(element).find("input[type='file']").change( function(event) {
$scope.$apply(function() {
var fileElement = $(element).find("input[type='file']");
$scope.model = [];
for (var i = 0; i < fileElement[0].files.length; i++) {
$scope.model.push(fileElement[0].files[i]);
}
});
});
}
}
}]);
问题是行$scope.model = []
。这会导致绑定丢失,现在更改为$scope.model
不会跨越边界传播回绑定的任何内容。现在这在1.1.5上工作得非常好。我在更改日志或迁移指南中找不到任何解释此内容的内容。那里没有任何与绑定相关的内容。
该指令的用法如下:
<div fileupload model="uploadFile" prompt="'Select File'" change-prompt="'Change'"></div>
如果我不将$scope.model
重新分配给新阵列。双向绑定有效。那么这里发生了什么?