この単純な関数を使用して、製品をそれぞれのカテゴリにグループ化します。私はタイムアウト内で関数を呼び出すことがわかります。AngularJSの関数から生成された後、ビューに配列が表示されない
問題は、console.log()のように動作しても、私の見解では何も見ることができません。私の見解で
function sortByCategories(){
var temp = [];
angular.forEach(admin.categories, function(category, value){
angular.forEach(admin.products, function(product, value){
angular.forEach(product.categories, function(prodCat, value){
if(prodCat.text == category.text)
{
if(!temp[category.text])
{
temp[category.text] = [];
}
temp[category.text].push(product);
}
})
})
})
admin.sortedProducts = temp;
}
$timeout(function(){
sortByCategories();
console.log(admin.sortedProducts); // This shows me what I expect.
}, 3500);
私のHTMLは、単に私が私の見解で見るすべては、私が何をしないのです[]
あるだけ<pre>{{admin.sortedProducts | json}}</pre>
のですか?
UPDATE
私はサービスにこの機能を移動し、私のルートで解決としてそれを置きました。私はまだ同じ問題に直面しています。ここに私が持っているものがあります。
.factory('Products', function($rootScope, $timeout, $q, fbUrl, $firebaseArray){
return {
sortByCategories: function() {
var temp = [];
var deferred = $q.defer();
var ref = new Firebase(fbUrl);
ref.once('value', function(snapshot){
var categories = snapshot.child('categories').val();
var products = snapshot.child('products').val();
angular.forEach(categories, function(category, value) {
angular.forEach(products, function(product, value){
angular.forEach(product.categories, function(prodCat, value){
if(prodCat.text == category.url)
{
if(!temp[category.url])
{
temp[category.url] = [];
}
temp[category.url].push(product);
}
})
});
});
deferred.resolve(temp);
})
return deferred.promise;
}
}
})
そして
その後、私のルートに私は決意でこれを持っている。そして、...
resolve: {
categorySortedProducts : function(Products){
return Products.sortByCategories();
}
}
...
それは私のコントローラにロードされています
.controller('productsCtrl', function($scope, categorySortedProducts){
var admin = this;
$scope.sortedProducts = categorySortedProducts;
console.log($scope.sortedProducts);
...
})
(方法によってはconsole.log作品^^ !)
最後に私のHTMLビューでは、私は単にこれを持っています:
<pre>{{sortedProducts | json}}</pre>
私のルートにコントローラがロードされていて、管理者としてロードされています。 (productsCtrlを管理者)。
UPDATE 2
だからそれは一種の奇妙である)はconsole.log(のように見えます。これは、次のようになります。
Array[0]
category-one[12]
categroy-two[15]
これは、親がArray [0]を表示するためには正常ですか?ただ問題を見つけようとしています。
私は同じことを考えましたが、OPはcontrollerAs構文を使用していて、 'admin'は実際には' this'へのローカル参照です。何か他のことは明らかに進んでいますが、コードの一部が掲載されているため、診断される可能性は低いです。 – Lex
私の質問が更新されました。もう一度見てください。 –
@Lex私はあなたに何を与えるより多くのコードがわからない。 –