私は3日間Angularをやり始めました。私は約束のコンセプトの周りを頭で覆うことができません。defer.promiseが期待通りに動作しない
私は2つのコントローラ間でJSONデータを共有するためのファクトリを作成しようとしています。データは、シリアライズされたSQLデータテーブルを表します。
工場は、第1のコントローラは、
app.controller("TableController", function ($scope, Tableau) {
$scope.elements = Tableau.getTable(2); // get the first ten rows with row id >= n x 10 (in this case 2 x 10)
});
HTMLテーブルとしてデータを表示する必要があり、ここでのNGディレクティブ
<tr ng-repeat="t in elements.myarray track by $index">
<td ng-repeat="(k,v) in t track by $index">
<div ng-if="k.indexOf('#')===0">
<span class="label label-default" ng-repeat="vv in v.split(';')">{{vv}}</span><br />
</div>
<div ng-if="k.indexOf('§')===0">
<a href="{{v}}">Lien</a>
</div>
<div ng-if="k.indexOf('#')!=0 && k.indexOf('§')!=0">
{{v}}
</div>
</td>
</tr>
とHTMLコードがあります$ HTTP
var app = angular.module('myApp', ['ngAnimate', 'ngSanitize', 'ui.bootstrap']);
app.factory('Tableau', function ($http, $q) {
var obj = {};
obj.getTable = function (page) {
var temp = {};
var defer = $q.defer();
$http.get('api/Table/' + page).then(function (resolve) {
defer.resolve(resolve.data);
});
return defer.promise;
}
return obj;
});
を使用してデータをフェッチ
コントローラーから$ httpを呼び出す際に問題はありませんが、コードを移動したとき$ factory.elementsには、期待されるJSONオブジェクトの代わりに約束オブジェクトが含まれています。
私は工場からオブジェクトを返す返す前に完了するために、(ui-bootstrapを使用して)
どのように私は待つことができます$ HTTPをテーブルの改ページを作成し前記第二のコントローラを実装していませんでしたか?
これができない場合は、サーバーから取得したデータを1回の移動でどのように共有できますか?
ありがとうございます。
どうもありがとう、私は知りませんでしたアンチパターンのための特別な感謝。 –