Angularjs$scope让我很困惑

Angularjs $scope is confusing me

本文关键字:scope Angularjs      更新时间:2023-09-26

我真的需要一些帮助。。。我已经试了好几个小时了,但还是没法工作。。。

我有一个.json文件,里面有100个这样的产品:

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

然后,由于角度数据绑定,视图也应该进行更新。

如何更改$范围中的此变量?这是我尝试过的,但没有任何效果:

$('.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
    });
});

我需要更新一些东西还是$appley()?如果有任何帮助/提示,我将不胜感激。。。

编辑:我认为$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()