gpt4 book ai didi

javascript - Angularjs $scope 让我感到困惑

转载 作者:行者123 更新时间:2023-11-28 07:30:57 26 4
gpt4 key购买 nike

我真的需要一些帮助...我已经尝试了几个小时但无法让它工作...

我有一个包含 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 中。数据显示在列表中,一切都很好。现在我想过滤产品并更改分数变量(在选项 slider 上滑动后)。

由于 Angular 数据绑定(bind), View 也应该更新。

如何在 $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?

我认为整个 Controller 的 $scope 是相同的......困惑

最佳答案

$scope.products[key] 是一个对象而不是数组。 push、splice、unshift 方法是在数组上定义的,而不是在对象上定义的。

尝试以下逻辑。

angular.forEach($scope.products, function(product) {
product.score = '25';
})

尝试$scope.$apply()如果需要

关于javascript - Angularjs $scope 让我感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29126463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com