服务返回的值不会在angularjs中的控制器变量中更新

时间:2017-11-17 14:39:46

标签: javascript angularjs

function getList() {

        SubCategoryService.getAllList().then(function (response) {
            $scope.subCategoryList = response.data;
            $scope.subCategoryDetailsList = [];

            var subCategoryDetails = [];



            for(var i=0; i < $scope.subCategoryList.length; i++) {

                var subCategoryListData = $scope.subCategoryList[i];

                var subcategory = {
                    'id' : subCategoryListData.id,
                    'category' : '',
                    'name' : subCategoryListData.name,
                    'created_on' : subCategoryListData.created_on,
                    'modified_on' :  subCategoryListData.modified_on,
                    'is_deleted' : subCategoryListData.is_deleted,
                    'is_active' : subCategoryListData.is_active,
                    'image_name' : subCategoryListData.image_name,
                    'image_path' : subCategoryListData.image_path
                }

                CategoryService.getCategoryById(subCategoryListData.category_id).then(function(response1) {
                    console.log(response1.data);
                    subcategory.category = response1.data;

                }, function(error) {
                    swal("Error", error.data, "error");
                })

                subCategoryDetails.push(subcategory);
            }

            console.log(JSON.stringify(subCategoryDetails));

        }, function (error) {
            swal("Error", "Something went wrong", "error");
        });
    }

CategoryService:

  this.getCategoryById = function(id) {
            return $http({
                url: globalUrl.baseurl + 'category/getCategoryById/' + id,
                method: 'GET'
            })
        }

在上面的代码中,我想从CategoryService服务获取数据,并成功返回CategoryService.getCategoryById函数中的数据。现在我试图通过服务将返回值分配给控制器中存在的subcategory.category。但我的问题是它没有更新subcategory.category中的值。

1 个答案:

答案 0 :(得分:3)

我的猜测是:

你在array执行API call之前推送新的变量值(由于js回调),你能尝试类似的东西吗?

CategoryService.getCategoryById(subCategoryListData.category_id)
.then(function(response1) {
    console.log(response1.data);
    subcategory.category = response1.data;

    // PUSHING AFTER API RETURNS THE VALUE
    subCategoryDetails.push(subcategory);

}, function(error) {
    swal("Error", error.data, "error");
})

// subCategoryDetails.push(subcategory);