2017-04-21 6 views
0

ファイルにWeb APIをポストするディレクティブから呼び出されるファクトリ関数を持つAngularJSコードがいくつか与えられました。私はコントローラに返されるキーを渡すのに問題があります。誰かが私にこのことをどうやって伝えることができるの?ここで

は、私のファイルをポスト私のファクトリ関数です:

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

関連する問題