約束を返すサービスコールからngHandsontableドロップダウンおよびオートコレクトコントロールをロードしようとしています。静的データからこれらのコントロールを読み込むと正常に動作しますが、非同期呼び出しからロードしようとするとコントロールが空になります。ngHandsontableドロップダウンまたはオートコンプリートフィールドに動的データをロードする
このplunker http://embed.plnkr.co/DQKBZK/には、うまく動作する1つのサンプルテーブルがあります。静的配列がロードされています。 2番目のテーブルは約束からテーブル行のデータを読み込むことができますが、このような方法でロードするためのドロップダウンまたはオートコンプリートコントロールを取得することはできません。私はあなたが提供できるアドバイスや提案を感謝します。コードスニペット:テンプレートに
、両方のテーブルに似て、これは動的一つである:
<hot-table datarows="dctrl.dynamicData" settings="dctrl.dynamicSettings">
<hot-column type="text" title="'Id'" data="myid"></hot-column>
<hot-column source="dctrl.dynamicWeather" type="'dropdown'" title="'Weather'" data="weather"></hot-column>
<hot-column type="'autocomplete'" title="'Menu'" data="menu">
<hot-autocomplete datarows="{{dctrl.dynamicMenu}}"></hot-autocomplete>
</hot-column>
</hot-table>
コントローラは、サービスによって提供される静的なデータを用いて第1のテーブルとコントロールをロード:
vm.staticData = DemoService.staticData;
vm.staticWeather = DemoService.staticWeather;
vm.staticMenu = DemoService.staticMenu;
staticData: [
{"myid": "1", "weather": "Cloudy", "menu": "Cheese"},
{"myid": "2", "weather": "Sunny", "menu": "Turnips"}
],
staticWeather: ['Cloudy', 'Sunny', 'Rainy'], // dropdown
staticMenu: ['Beans', 'Cheese', 'Turnips'].join(','), // autocomplete
動的DA:サービスによって提供
静的データ単純なJSONファイルによってサービスコールを介して提供されます。だから、天候ドロップダウンのために、我々はコントローラでこれを持っている:
vm.dynamicWeather = [];
DemoService.getDynamicWeather()
.then(function successCallback(results) {
vm.dynamicWeather = results;
});
はここで動的な気象データは、サービスによって提供される方法は次のとおりです。
getDynamicWeather: function() {
var def = $q.defer();
$http.get('weather.json')
.then(function successCallback(response) {
var i, responseArray = [];
for (i = 0; i < response.data.length; i++) {
responseArray.push(response.data[i].weather);
}
def.resolve(responseArray);
});
return def.promise;
},
とJSONの気象データファイル:
[
{"weather": "Cloudy"},
{"weather": "Sunny"},
{"weather": "Rainy"}
]
私はこれほど長い間、このことについてずっと悩んでいます。私が試したことは、$タイムアウト(ダイジェストサイクルをトリガする)、ハンドハンドのインスタンスの取得、レンダリングの強制、配列の代わりにオブジェクトを使うこと、関数呼び出しを使ってドロップダウンデータをロードすることです。私は、データを2回読み込む、あるいはまったく読み込まない、または(関数呼び出しで)ハンドラントをブラウザをクラッシュさせる無限ループにすることに成功しました。あなたが提供できるすべての提案は、ありがとう、ありがとう。
デモ:http://embed.plnkr.co/nYEjRGKAIHOBLn2CzUou/ – phaas
これは私が考えていたものとは異なるパターンで、私にとってはうまくいくと思います。可能な答えとしてこれを受け入れ、それを渦巻きにする。ありがとうございました! – MikeyM