angularjs使用.map不是函数

angularjs using .map is not a function

本文关键字:函数 map 使用 angularjs      更新时间:2023-09-26

试图操作response.data以使用.map在响应中添加isLoggedin = true,但它会给我一个"map"的错误,这不是一个函数。

vm.dataResponse = response.data.map(function(data){
  data.isLoggedIn = false;
});

尝试这样做,这样我就可以有一个数据来参考用户是否登录(登录/注销)。或者我可以使用$rootScope,但我认为使用全局并不理想?

    $rootScope.isLoggedIn = false;

然后在我的vm.login函数中,$rootScope将被设置为true,这是有效的,但当我刷新页面时,它会返回false。

response.data需要是一个数组才能使用.map

.map将通过迭代现有数组的所有值来创建一个新数组,并在数组的每个成员上返回所提供回调的结果,例如

var oldArray = [1,2,3,4];
var newArray = oldArray.map(function(number){
    return number * 2;
});
//newArray = [2,4,6,8]

因此,在您的示例中,即使response.data是一个数组,它也不会起作用,因为您没有从回调中返回任何内容。

如果response.data是一个对象,您可以直接添加属性,例如

response.data.isLoggedIn = false;

如果你能按照developer033的建议,提供response.data的console.log的输出,这将有助于确定如何最好地处理它

编辑:

因为您只是返回一个字符串,请尝试:

vm.dataResponse={username:response.data,isLoggedIn:true}