我有这个Angular代码,它在行上给我一个错误:
vm.lps.sort()
(() => {
angular
.module('app')
.controller('appController', appController)
appController.$inject = ['$http', '$scope', '$rootScope'];
function appController ($http,$scope, $rootScope) {
let vm = this;
$http.get('/user/username/').then(function(response){
vm.names = response.data.lps;
})
//Sort the array
vm.names.sort();
..................
..................
}
})()
,错误是:
Cannot read property 'sort' of undefined
at new appController
为什么会这样?
答案 0 :(得分:-1)
Http请求返回一个承诺,即数据将来可以使用,您无法读取未定义的属性类型,因为数据仍然无法实现。 试试这个
$http.get('/user/username/').then(function(response){
vm.names = response.data.lps;
vm.names.sort();
}).catch(function error(){
//define error behaviour here
});
答案 1 :(得分:-1)
在vm.names.sort()
被调用时,vm.names
没有指向数组,它仍未定义。
您可能想要像这样修改您的控制器:
$http.get('/user/username/').then((response) => {
vm.names = response.data.lps.sort();
});