2017-04-21 35 views
0

我已經給出了一些AngularJS代碼,該代碼具有一個工廠函數,該工廠函數是從將文件發佈到Web API的指令調用的。我無法通過返回給我的控制器的密鑰。有人能告訴我如何做到這一點?

這裏是我廠功能的留言我的文件:

return fileManagerClient.save(formData) 
    .$promise 
    .then(function(result) { 
     if (result && result.files) { 
     result.files.forEach(function(file) { 
      if (!fileExists(file.name)) { 
      service.files.push(file); 
      } 
     }); 
     } 

     appInfo.setInfo({ 
     message: "files uploaded successfully" 
     }); 

     return result.$promise; 
    }, 
    function(result) { 
     appInfo.setInfo({ 
     message: "something went wrong: " + result.data.message 
     }); 
     return $q.reject(result); 
    })['finally'](
    function() { 
     appInfo.setInfo({ 
     busy: false 
     }); 
     service.status.uploading = false; 
    }); 
} 

,我試圖讓result.value(這是發佈文件的密鑰)傳遞到我的控制器,但我不當然如何去做。

任何幫助表示讚賞。

感謝,

皮特

+1

顯示的代碼中有太多未知數。 'return result。$ promise;'看起來很可疑。也不知道你在做什麼指令 – charlietfl

回答

0

如果你說的是真的,那麼你只需要擁有then回調返回result.value

.then(function(result) { 
    if (result && result.files) { 
    result.files.forEach(function(file) { 
     if (!fileExists(file.name)) { 
     service.files.push(file); 
     } 
    }); 
    } 

    appInfo.setInfo({ 
    message: "files uploaded successfully" 
    }); 

    return result.value; 
} 

在你的控制器:

myFactory.myFactoryFunction(formData) 
    .then(function (key) { 
     console.log(key); 
    }); 
+0

謝謝JLRishe和charlietfl。 。 。我沒有創建這個代碼,在這種情況下我遇到的問題是理解流程。從本質上講,文件成功上傳後,我不明白它返回到哪裏。在這種情況下,我有一個控制器,它有一個指令。該指令在其中有一個模板,它調用工廠中的函數「Upload」。然後上傳使用另一個工廠中的另一個功能來實際上傳文件。 – Pete

+0

所以我想關鍵的問題是:這行代碼在哪裏:「return result。$ promise;」還給?如果我用這個代替這行代碼:「return result.value;」它會在代碼返回的地方產生變化嗎?在成功上傳文件後,您會發現它沒有在我的任何控制器中觸發任何斷點。 。 。皮特 – Pete

相關問題