2017-07-14 14 views
0

私は、選択肢の1つがデータがバックエンドによって生成された配列から来るフィールドであるフォームを持っています。角型ディレクティブがコントローラデータを更新しない

私が持っている問題は、コントローラにデータを格納する空の配列があることです。 この配列は、バックエンドへの要求によって作成されます。唯一の問題は、コントローラー上に作成された空の配列のみを使用する更新データをディレクティブが使用していないことです。

添付ファイルplunkrのこのディレクティブを使用しました。 http://plnkr.co/edit/J7bQoSKe17VQ5i6RPxps?p=info

setTimeoutは、私のajax呼び出しのように動作します。

 //Very big arry that will become all the available choices. 
    vm.allItems = []; 

    // 'Loaded' after time to act like async ajax request to server. 
    setTimeout(function(){ 
    for (var i = 0; i < 9500; i++) { 
    var person = { 
     name: 'Adam' + i, 
     email: 'adam' + i + '@email.com', 
     age: 12, 
     country: 'United States' 
    }; 
    vm.allItems.push(person); 
    } 
    document.getElementById('status').innerHTML = 'Loaded: ' + vm.allItems[4].name + ' and others.'; 
    }, 1500); 

私はステータスデータの更新をテストして、データがいつ存在するかを確認しました。

前もって感謝します。

答えて

1

2つの問題があります。

まず:タイムアウトがそう両方の値がnullでトリガする前に

vm.multipleDemo.selectedPeople = [vm.allItems[500], vm.allItems[4]]; 

が呼び出されます。

秒: $ timeoutを使用するには、setTimeoutを変更する必要があります。結果は次のようになります。

$timeout(function(){ 
for (var i = 0; i < 9500; i++) { 
var person = { 
    name: 'Adam' + i, 
    email: 'adam' + i + '@email.com', 
    age: 12, 
    country: 'United States' 
}; 
vm.allItems.push(person); 
} 
vm.multipleDemo.selectedPeople = [vm.allItems[500], vm.allItems[4]]; 
document.getElementById('status').innerHTML = 'Loaded: ' + vm.allItems[4].name + ' and others.'; 
    }, 1500); 

$タイムアウトがかなりのsetTimeoutのように動作しますが、それは$変更は、角度によって見られることを保証する適用でコールバック関数をラップします。

あなたのAJAXリクエストは掲載されていませんが、あなたのリクエストを行うために$ httpを見てください。これは結果が角度で表示されることを意味します。 参照:https://docs.angularjs.org/api/ng/service/ $ http

+0

私のコードティムを見ていただきありがとうございます。かなり新しい角度で私は本当にそれを感謝します。 $タイムアウトのヒントをありがとう。とにかく大草原でテストするために使っていただけだった。 plunkrは動作しているようですが、コード・コードを変更すると、いくつかのことが起こります。 私はajax呼び出しを行うために作った工場/サービスで$ httpを使用しました。 'getAll:function(){ $ http.getを返します(CONFIG.BASE_API_URL +" all "); } 'うまくいきます。 – Cook

+0

私は、'{{allItems}}'のようなものを使ってajax呼び出しの結果を 'ログに記録'すれば、出力が表示されることがわかります。 allItemsを入力として受け取るディレクティブ ''は更新された配列を使用しません。 アイデアは、何らかの範囲について疑問を持っていましたか?多分... – Cook

関連する問題