2017-08-10 16 views
1

こんにちは、私はangularjsでWebアプリケーションを開発しています。私はangularjsの配列を照会しようとしています。以下は私のコードスニペットです。angularjsのJavaスクリプト配列を照会できません

var angulararray = []; 
bindleaselistings.bindleaselistingsmethod().then(function(response) { 
    angular.forEach(response.data.data.LeaseList, function(value, key) { 
    angulararray.push(value); 
    }); 
}, function(error) {}); 
console.log(angulararray); 
debugger; 
var found = $filter('filter')(angulararray, { 
    id: accountnumber 
}, true); 
if (found.length) { 
    $scope.selected = JSON.stringify(found[0]); 
} else { 
    $scope.selected = 'Not found'; 
} 

console.logは必要な配列を表示します。私はスクリーンショットを添付しました。 enter image description here

私がvar found = $filter('filter')(angulararray, { id: accountnumber }, true);をデバッグすると、angulararrayが空であることがわかります。私は上記のコードで何か間違っているのですか?どんな助けもありがとう。ありがとうございます

+0

あなたは、問題を見つけるために、質問にすべてのコードを投稿することができます。 –

+0

アカウント番号がフィルタリングする変数であれば、次のようになります: 'var found = $ filter( 'filter')(angulararray、accountnumber、true);' –

+0

問題は非同期操作の誤解です。 JS – MysterX

答えて

2

問題は、コードの非同期実行です。あなたのAPI呼び出しとその下のコードの実行は、並行して実行されます。 angulararrayの値は、API呼び出しの外部では空です。 APIの成功コールバック内でフィルタリングを移動できます。

var angulararray = []; 
bindleaselistings.bindleaselistingsmethod().then(function(response) { 
    angular.forEach(response.data.data.LeaseList, function(value, key) { 
     angulararray.push(value); 
    }); 
var found = $filter('filter')(angulararray, { 
    id: accountnumber 
}, true); 
}, function(error) {}); 
console.log(angulararray); 

if (found.length) { 
    $scope.selected = JSON.stringify(found[0]); 
} else { 
    $scope.selected = 'Not found'; 
} 
+0

ありがとうございました。私はスクリーンショットを更新しました。私はaccountNumberイベントと一致することができませんaccounnumberが配列内に存在します。 –

+1

私はフィルタ内でaccountNumberを使うべきだと思います – Vivz

1

あなたには非同期の問題があります。約束が解決された後、コードを実行する必要があります。

あなたのツールが変数のライブビューを表示するため、console.logでレスポンスを取得する理由があります。したがって、変数が解決されると、コンソールのビューは解決された約束の結果に変わります。

var angulararray = []; 
bindleaselistings.bindleaselistingsmethod().then(function (response) { 
    angular.forEach(response.data.data.LeaseList, function (value, key) { 
     angulararray.push(value); 
    }); 
    console.log(angulararray); 
    debugger; 
    var found = $filter('filter')(angulararray, { 
     id: accountnumber 
    }, true); 
    if (found.length) { 
     $scope.selected = JSON.stringify(found[0]); 
    } else { 
     $scope.selected = 'Not found'; 
    } 
}, function (error) { }); 
0

あなたはuはウル変数をフィルタリングし、このようなものを持っている方法を変更することができます:

var found; 
var len = angulararray.length; 
for(var i=0; i<angulararray; i++){ 
    if(typeof angulararray[i]['AccountNumber'] === 'undefined') { 
    $scope.selected = 'Not found'; 
    } 
    else { 
    found = angulararray[i]; 
    $scope.selected = JSON.stringify(found[0]); 
    } 
} 
関連する問題