私はangularJSを初めて使用していますが、何か小さなものが見つからないかもしれませんが、私は角のフロントエンドのための残りのAPIを提供するスプリングブートバックエンドを持っています。私は工場でngResourseを使用していますが、これは正常に動作するようです。問題は、ビューをロードするとき、アイテムの配列が表示されないとき、私がコントローラに同じデータを再度ロードする関数を作成し、ビューに詳細が表示されるということです。私は関連するコードを含めました。AngularJSはビューをロードするときに残りの呼び出しから配列を表示しません
angular.module('myApp.products.module')
.controller('productsCtrl', [
'$rootScope', '$log', '$state', '$timeout', '$location', '$mdDialog', '$resource', 'productsFactory',
function ($rootScope, $log, $state,
$timeout, $location, $mdDialog, $resource, productsFactory) {
var scope = this;
var init = function() {
scope.products = productsFactory.query();
scope.test(1);
};
scope.test = function(productId) {
scope.oneProduct = productsFactory.get({id: productId});
scope.products = productsFactory.query(/*console.log*/);
};
init();
}])
ここ
されるHTML::
<div layout="column" ng-cloak>
<div layout="column">
<div>
<md-button class="md-no-focus" ng-click="vm.test(2)">test</md-button>
Test Result: {{ vm.oneProduct }}
</div>
<div>
<ul ng-repeat="prod in vm.products">
<li> {{ prod.id }}</li>
<li> {{ prod.name }}</li>
</ul>
</div>
</div>
ビュー負荷
ここangular.module('myApp.products.module')
.factory('productsFactory', ['$resource', function($resource) {
return $resource('http://localhost:8080/product/findall/:id', {id : '@id'});
}])
は(VMなど)コントローラである:ここでは
は私の工場ですoneProductはうまく表示されます。リスト項目は何も表示されませんが、テストボタンを押して再度クエリを呼び出すと、すべて表示されます。どんな助けも大いに受け取ります。ありがとうございました。
なぜ 'init()'で 'scope.products'を初期化し、' .test() 'でも' 1'で直ちに初期化しますか? – Searching
私はこれをテストのためにしました。 –
initメソッドを使用せずに、製品とoneProductsを初期化していました。 oneProductは常にJSONを文字列で表示しますが、製品を表示しようとすると配列が空になります。[] –