You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Angular Material无法将后端数据赋值到模型的问题求助

问题分析与解决办法

核心问题

  1. 异步执行顺序错误:$http是异步请求,你写的console.log会在请求还没拿到后端数据时就执行,所以打印出来的是空数组,HTML组件也会因为数据未更新而无法显示内容。
  2. transformResponse用法不当:这个钩子的作用是转换响应数据格式,不是用来直接更新$scope的;而且你没解析后端返回的JSON字符串,直接push的是原始文本,没法被Angular双向绑定识别。

修正后的代码

$scope.assignDataById = [];
var method = "GET";
var url = 'users/get_list_by_epf/' + Epf;

$scope.createUserBusy = $http({
    method: method,
    url: url,
    headers: {
        'Content-Type': 'application/json'
    }
}).then(function(response) {
    // 请求成功后,response.data已经是解析好的JSON对象/数组
    // 若后端返回数组,直接赋值
    $scope.assignDataById = response.data;
    // 若后端返回单个对象,用push添加
    // $scope.assignDataById.push(response.data);
    console.log($scope.assignDataById); // 这里才能拿到有效数据
}, function(error) {
    // 处理请求失败的情况
    console.error('数据获取失败:', error);
});

关键说明

  • 用then()绑定成功回调,确保只有在后端返回数据后才更新$scope,Angular的双向绑定会自动把数据同步到HTML组件上。
  • 删掉自定义的transformResponse,Angular默认会自动把后端返回的JSON字符串解析成JavaScript对象,无需手动处理。
  • 根据后端返回的数据结构选择赋值方式:数组直接替换assignDataById,单个对象则用push添加到数组中。

内容的提问来源于stack exchange,提问作者dasun dilshan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 14:48:25