2015-03-13 98 views
1

所以我在我的范围值称为$scope.selectedComponent角文件上传更新范围onCompleteItem

然后,我有以下uploader

var uploader = $scope.uploader = new FileUploader({ 
    url: 'user_resources/upload.php', 
    formData: [{module_id: $state.params.id, component: $scope.selectedComponent}] 
}); 

// FILTERS 

uploader.filters.push({ 
    name: 'customFilter', 
    fn: function(item /*{File|FileLikeObject}*/, options) { 
     return this.queue.length < 10; 
    } 
}); 

// CALLBACKS 

uploader.onWhenAddingFileFailed = function(item /*{File|FileLikeObject}*/, filter, options) { 
    console.info('onWhenAddingFileFailed', item, filter, options); 
}; 
uploader.onAfterAddingFile = function(fileItem) { 
    console.info('onAfterAddingFile', fileItem); 
}; 
uploader.onAfterAddingAll = function(addedFileItems) { 
    console.info('onAfterAddingAll', addedFileItems); 
}; 
uploader.onBeforeUploadItem = function(item) { 
    console.info('onBeforeUploadItem', item); 
}; 
uploader.onProgressItem = function(fileItem, progress) { 
    console.info('onProgressItem', fileItem, progress); 
}; 
uploader.onProgressAll = function(progress) { 
    console.info('onProgressAll', progress); 
}; 
uploader.onSuccessItem = function(fileItem, response, status, headers) { 
    console.info('onSuccessItem', fileItem, response, status, headers); 
}; 
uploader.onErrorItem = function(fileItem, response, status, headers) { 
    console.info('onErrorItem', fileItem, response, status, headers); 
}; 
uploader.onCancelItem = function(fileItem, response, status, headers) { 
    console.info('onCancelItem', fileItem, response, status, headers); 
}; 
uploader.onCompleteItem = function(fileItem, response, status, headers) { 
    console.info('onCompleteItem', fileItem, response, status, headers); 
}; 
uploader.onCompleteAll = function() { 
    console.info('onCompleteAll'); 
}; 

callback功能:onCompleteItem是我想更新selectedComponent对象,但在该功能范围内,我无法获得变量scope

我的问题是如何文件上传后我能否更新变量?

回答

2

确保在$范围在你的控制器中加载:

.controller('AppController', ['$scope', 'FileUploader', function($scope, FileUploader) { 

之后,你可以从该控制器的任何位置更新$ scope.selectedComponent的价值。

$scope.selectedComponent = "not uploaded"; 

    uploader.onCompleteItem = function (fileItem, response, status, headers) { 
        $scope.selectedComponent = "upload complete"; 
}; 
+0

你能否请你的答案给出解释为什么这段代码回答这个问题?仅限代码答案[不鼓励](http://meta.stackexchange.com/questions/148272),因为他们没有教导解决方案。 – DavidPostill 2015-03-16 08:26:09

+0

这不起作用 – 2015-03-16 10:10:15

+0

@MarcRasmussen尝试在onCompleteItem函数中放置console.log($ scope.selectedComponent),并检查值是否已更新。如果日志中有任何错误,还会发布错误信息? – Michel 2015-03-17 06:50:44

1

你可以得到你的范围这样

var scope = angular.element(document.getElementById('MyCtrl')).scope(); 

还没有测试它,但它应该工作。

+0

不幸的是,这并没有工作:S – 2015-03-16 14:44:39

+0

你收到什么信息? – 2015-03-17 05:31:30