2016-12-30 6 views
1

かなり基本的なもの...のために働いていないことは、それが動作するはずのように思えるが、ここではないreturn文は、オブジェクト

どちらのコンソールログは、正しい情報を吐き出すん。

$scope.getCurrentAttachment = function() { 
    angular.forEach(attachments, function(attachment) { 
    console.log(attachment); 
    if(attachment.active) { 
     console.log(attachment); 
     return attachment; 
    } 
    }); 
}; 

しかし、それ以降のファイルでそれを呼び出すくらいにappriciatedされるだろうすべてのヘルプ未定義

$scope.save = function() { 
    console.log($scope.getCurrentAttachment()); 
    var data = [$scope.labels.selected, $scope.getCurrentAttachment()]; 
    console.log(data); 
    $uibModalInstance.close(data); 
}; 

になります。私は、これはあなたがここに持って

+0

「添付ファイル」とは何ですか?これは引数として$ scope.getCurrentAttachmentに渡されていません。スコープ変数、グローバル変数、...? – jbrown

+0

何がうまくいくはずですか? 'undefined'とは何ですか? '$ scope.getCurrentAttachment'関数か' attachment'変数ですか? [ask] [mcve] – TheSharpieOne

+0

を使用して$ scope.getCurrentAttachment()の戻り値は未定義です。 添付ファイルは、ログに正常に表示されるオブジェクトの充実した配列です –

答えて

4
$scope.getCurrentAttachment = function() { 
    angular.forEach(attachments, function(attachment) { 
    console.log(attachment); 
    if(attachment.active) { 
     console.log(attachment); 
     return attachment; 
    } 
    }); 
}; 

return句が動作しない理由はわかりません、getCurrentAttachmentため、angular.forEach機能のためではありません。

配列ptototypeの.filter関数を使用すると、次のことができます。

$scope.getCurrentAttachment = function() { 
    var filteredArray = [] 
    filteredArray = attachments.filter(function(attachment) { 
    console.log(attachment); 
    return attachment.active; 

    }); 
    return filteredArray ; 
}; 
+1

パーフェクト、ありがとう。私は自分のコードを少し違って修正しました。関数からの戻り値を使用する代わりに、スコープ変数を設定するだけです。関係なく、あなたの情報は非常に有用でした。どうもありがとう!私はあなたの答えを受け入れてくれます。 –