我在这里确实需要一些帮助...我现在已经尝试了几个小时,无法正常工作...
我有一个包含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是相同的...感到困惑
$scope.products[key]
是一个对象而不是数组。push, splice, unshift
方法是在数组上定义的,而不是在对象上定义的。
请尝试以下逻辑。
angular.forEach($scope.products, function(product) {
product.score = '25';
})
$scope.$apply()
如果需要,请尝试。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句