角度(1.6.4)選択を使用するWebサイトで作業しています。 select要素の内容は、初めて要求された場合はREST経由でロードされます。しかし、REST呼び出しの応答はキャッシュされ、以後の呼び出しはメモリーからデータをロードします。ウェブサイトをロードすると、select要素は空であり、値を選択することはできません。データをキャッシュしてサイトに再度アクセスすると、リストから項目を選択することができます。 REST呼び出しをデータが入っているファイルにリダイレクトすると、最初の試行で動作し、予想どおりに項目を選択できますモデルが変更された場合、角度選択は更新されません
コードは原則として機能しますが、モデルがあまりにも遅く更新された場合、変更に気付かない。
<select ng-model="myData" chosen
class="select--chosen"
ng-change="handleSelection()"
ng-options="myData as myData.value for myData in dataArray">
</select>
をコントローラコードは、この(サイトを開いたときに呼ばれる)のようになります:私はロード時に
$scope.dataArray = [];
//$scope.dataArray = [{value : "just a test value"}];
$scope.$watch('dataArray ', function() {console.log("dataArray was changed...")}, true);
getArray();
function getArray() {
DataFactory.getArray().then(function (data) {
$scope.dataArray = data;
});
}
私は時計のメッセージを得るのです。ここ
は、私が使用していたコードです最初のサイトです。解決策を探すときに私はいくつかのヒントを見つけましたが、どれも私のために働いていませんでした。これは私が試したものです:
1)この関数内dataArrayを設定したり、時計機能の内部でそれを呼び出すために
$scope.$apply(function(){ /* code */ });
を追加します。どちらの場合も、私は、ダイジェストは、既に更新したりので、スコープを使用する必要ありませんであることを示してコンソールにエラーが発生しました。$
2を適用)dataArray =データを設定した後
$scope.onChange($scope.dataArray);
を使用します。
残念ながら、何も機能しませんでした。私が行コメントを解除した場合:
$scope.dataArray = [{value : "just a test value"}];
を私はページをロードした後、この項目を選択することができますし、選択ビューは、dataArrayの最初のエントリを示し、その後、私は全体のリストにアクセスし、そこから項目を選択することができます。
私は、データが利用可能になった後に選択ビューを更新するために何ができるか知りたいと思います。リスナーを追加するか、selectビューを手動で呼び出してupdate()、refesh()などを実行します。そのような機能はありますか?
ワークス微細https://plnkr.co/edit/mLZRxl4fektVAGnLGaAJ?p =プレビュー)。 – georgeawg