2016-02-27 2 views
0

У меня есть объект продуктов. Продукты, которые я получаю от ресурса (Product), хранят на заводе (productsStore) и проходят через контроллер.Двунаправленная привязка данных для forEach?

В другом контроллере я хочу либо удалить обновленные продукты через productsStore.empty();, либо productsStore.get();. Но любой из них ничего не делает. Значение my forEach, ниже, не запускается снова, а список не обновляется. Что я делаю неправильно?

Контроллер:

vm.products = productsStore.get(); 
vm.products.$promise.then(function (data) { 
    angular.forEach(vm.products, function (child) { 
     //. some code 
    )}; 
)}; 

Фабрика:

myApp.factory('productsStore', function ($http, $q, Product) { 
    var products = ""; 

    var get = function() { 
     return products = Product.query(); 
    }; 

    var empty = function() { 
     return products = {}; 
    }; 

    // Bind products 
    products = get(); 

    return { 
     get: get, 
     empty: empty 
    }; 
}); 

Ресурс:

myApp.factory('Product', function ($resource) { 
    return $resource('http://api.com/api/products/:id', { id: '@id' }, { 
     update: { 
      method: 'PUT' 
     } 
    }); 
}); 
+0

Обещание разрешается только один раз. – dfsq

ответ

0

пытаются проходным данные, которые вы получите после того, как обещание решить, в противном случае это довольно бесполезно переменная.

angular.forEach(data, function(child) { 
    //...do something with the child 
}); 

Кроме того, у вас есть опечатка, что я не уверен, что у вас есть в вашем фактическом коде. В вашем контроллере конец блока должен быть}) и не)}

+0

Я попытался удалить проверку обещания полностью, но без изменений. Все еще ничего не обновляется: -/ – brother

+0

Что вы подразумеваете под обещанием? вам не следует удалять что-либо помимо замены «vm.products» на «данные» в блоке «forEach». –

+0

Ahh, извините. Не понял вас. Теперь это изменилось, но все равно ничего. Хмм – brother

Смежные вопросы