Javascript 带有外部JSON文件的Ionic框架

Javascript 带有外部JSON文件的Ionic框架,javascript,json,angularjs,ionic,Javascript,Json,Angularjs,Ionic,我有一个不知道如何解决的问题,我有一个IONIC Tabs模板,希望添加一个外部JSON文件来显示,而不是默认显示的模板好友列表 这是我的app.js文件 .state('tab.friends'{ url:“/friends”, 观点:{ “tab friends”:{ templateUrl:'templates/tab friends.html', 控制器:“FriendsCtrl” } } }) .state('tab.friend detail'{ url:“/friends/:fr

我有一个不知道如何解决的问题,我有一个IONIC Tabs模板,希望添加一个外部JSON文件来显示,而不是默认显示的模板好友列表

这是我的app.js文件

.state('tab.friends'{
url:“/friends”,
观点:{
“tab friends”:{
templateUrl:'templates/tab friends.html',
控制器:“FriendsCtrl”
}
}
})
.state('tab.friend detail'{
url:“/friends/:friendId”,
观点:{
“tab friends”:{
templateUrl:'templates/friend detail.html',
控制器:“FriendDetailCtrl”
}
}

})
我猜angular正在访问$scope.friends,而这仍然是一个承诺。您是否尝试过使用.state定义中的resolve语句解析变量

app.js应该如下所示:

.state('tab.friends', {
  url: '/friends',
  views: {
    'tab-friends': {
      templateUrl: 'templates/tab-friends.html',
      controller: 'FriendsCtrl',
      resolve: {
        allfriends: function(Friends) {
          return Friends.all(); }
      }
    }
  }
})
.factory('Friends', function($http, $q) {
var friends = [];
  return {
    all: function(){
      var dfd = $q.defer();
      $http.get("http://yanupla.com/apps/ligajaguares/equipos.json").then(function(response){
        friends = response.data;
        console.log(friends);
        dfd.resolve(friends);
      });
      return dfd.promise;
    },
    get: function(friendId) {
       for (var i = 0; i < friends.length; i++) {
        if (friends[i].id === parseInt(friendId)) {
          return friends[i];
        }
      }
      return null;
    }
  }
});
控制器应为:

.controller('FriendsCtrl', function($scope, allfriends) {
  $scope.friends = allfriends;
})
我认为您需要使用$q来正确解析,因此服务需要如下所示:

.state('tab.friends', {
  url: '/friends',
  views: {
    'tab-friends': {
      templateUrl: 'templates/tab-friends.html',
      controller: 'FriendsCtrl',
      resolve: {
        allfriends: function(Friends) {
          return Friends.all(); }
      }
    }
  }
})
.factory('Friends', function($http, $q) {
var friends = [];
  return {
    all: function(){
      var dfd = $q.defer();
      $http.get("http://yanupla.com/apps/ligajaguares/equipos.json").then(function(response){
        friends = response.data;
        console.log(friends);
        dfd.resolve(friends);
      });
      return dfd.promise;
    },
    get: function(friendId) {
       for (var i = 0; i < friends.length; i++) {
        if (friends[i].id === parseInt(friendId)) {
          return friends[i];
        }
      }
      return null;
    }
  }
});
.factory('Friends',函数($http,$q){
var-friends=[];
返回{
全部:函数(){
var dfd=$q.defer();
$http.get(“http://yanupla.com/apps/ligajaguares/equipos.json)然后(函数(响应){
friends=response.data;
console.log(朋友);
决心(朋友);
});
回报dfd承诺;
},
获取:函数(friendId){
for(var i=0;i
关于这一点的更多信息,我建议阅读爱奥尼亚的以下公式:

此外,这对我理解承诺的概念有很大帮助:

您是否有使用console.log(response.data)的功能?有任何响应吗?是的,我使用了console.log(response.data)它正确地显示了JSON对象,就像console.log(friends)一样,但我需要在我的模板(tabs friends.html)中查看它太棒了!帮了大忙,这真的帮了我的忙!谢谢!这是我在Stackoverflow中的第一个问题,大家都很快帮了我很多忙,感谢大家的回答。