无法读取属性`' sort`'在新的claimController中未定义

时间:2016-07-15 16:25:56

标签: angularjs

我有这个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

为什么会这样?

2 个答案:

答案 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();
});