2017-04-21 32 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

相关问题