我真的需要一些帮助......我现在试了好几个小时而且无法让它工作......
我有一个包含100个这样的产品的.json文件:
[{
"ean": "3613132010420",
"brand": "NewBrand",
"desc": "A description",
"feature1": "",
"feature2": "",
"feature3": "",
"feature4": "",
"feature5": "",
"img": "",
"metric": {
"gender": "female",
},
"score":""
},
{
"ean": "3613132010420",
"brand": "NewBrand",
"desc": "A description",
"feature1": "",
"feature2": "",
"feature3": "",
"feature4": "",
"feature5": "",
"img": "",
"metric": {
"gender": "female",
},
"score":""
}]
我用$ http读取json并将所有内容放在$ scope.products中。数据显示在列表中,一切都很好。现在我想过滤产品并改变分数变量(在选项滑块上滑动后)。
由于角度数据绑定,视图也应该更新。
如何在$ scope中更改此变量? 这是我尝试过的,没有任何作用:
$('.find-style-slider .slick-list').bind('touchstart click', function(){
angular.forEach($scope.products, function(value, key) {
$scope.products[key].score = '25'; //nothing happens
var obj = { score: '25' };
$scope.products[key].push(obj); //Uncaught TypeError: undefined is not a function
$scope.products.splice(key, 0, obj); //no error but $scope variable does not change
$scope.products[key].unshift(obj); //Uncaught TypeError: undefined is not a function
});
});
我是否需要更新内容或$ apply()? 我会感谢任何帮助/提示...
编辑:我认为$ scope不像我想的那样工作.... 我用服务填充$ scope.products:
productService.initDb().then(function(products) {
$scope.products = products;
});
当我把这个
var obj = { score: '25' };
$scope.products.splice(0, 0, obj);
在initDb函数中,然后第一个元素被更新! 但不在外面。
现在的问题是:为什么?如何从服务功能外部访问$ scope.products?
我认为整个控制器的$ scope是相同的...... confused
答案 0 :(得分:0)
$scope.products[key]
是一个不是数组的对象。 push, splice, unshift
方法是在不在对象上的数组上定义的。
尝试以下逻辑。
angular.forEach($scope.products, function(product) {
product.score = '25';
})
如果需要,请尝试$scope.$apply()
。