2017-05-06 12 views
0

這是我的故事文件的控制器無法讀取性能在控制器的不確定的「推」和他們的服務

angular.module('storyCtrl', ['storyService']) 
    .controller('StoryController', function(Story, socketio) { 
    var vm = this; 
    Story.all() 
     .then(function(response) { 
     //.success(function(data) { 
      //console.log(data); 

      vm.stories = response; 
     }); 
    vm.createStory = function() { 
     vm.processing = true; 
     vm.message = ''; 
     Story.create(vm.storyData) 
      .then(function(data) { 
       console.log(data); 
      //.success(function(data) { 
       vm.processing = false; 
       vm.storyData = {}; 
       vm.message = data.message; 
      }); 

    }; 

    socketio.on('story', function(response) { 
     vm.stories.push(response); 
    }) 

    }) 

.controller('AllStoriesController', function(stories, socketio) { 
    var vm = this; 
    vm.stories = stories.data; 
    socketio.on('story', function(data) { 
     vm.stories.push(data); 
    }); 
    }); 

,這是我的故事服務文件

angular.module('storyService', []) 

.factory('Story', function($http) { 


var storyFactory = {}; 

storyFactory.allStories = function() { 
    return $http.get('/api/all_stories'); 
} 

storyFactory.all = function() { 
    return $http.get('/api/'); 
} 

storyFactory.create = function(storyData) { 
    return $http.post('/api/', storyData); 
    } 

    return storyFactory; 


    }) 

    .factory('socketio', function($rootScope) { 

    var socket = io.connect(); 
    return { 

    on: function(eventName, callback) { 
     socket.on(eventName, function() { 
      var args = arguments; 
      $rootScope.$apply(function() { 
       callback.apply(socket, args); 
      }); 
     }); 
    }, 

    emit: function(eventName, data, callback) { 
     socket.emit(eventName, data, function() { 
      var args = arguments; 
      $rootScope.apply(function() { 
       if(callback) { 
        callback.apply(socket, args); 
       } 
      }); 
     }); 
    } 

    }; 

}); 

我有得到一個錯誤becouse我更新角1.3到1.6這是在1.3良好的工作,但它不是在角1.6工作是否有任何問題升級的角度版

我有一個錯誤上面的控制器線「 vm.stories.push(響應);」

 TypeError: vm.stories.push is not a function 
    at n.<anonymous> (storyCtrl.js:36) 
    at storyService.js:38 
    at Scope.$eval (angular.js:17972) 
    at Scope.$apply (angular.js:18072) 
    at n.<anonymous> (storyService.js:37) 
    at n.emit (universalModuleDefinition:2) 
    at n.onevent (universalModuleDefinition:3) 
    at n.onpacket (universalModuleDefinition:3) 
    at n.<anonymous> (universalModuleDefinition:3) 
    at n.emit (universalModuleDefinition:2) 

回答

0

看起來你vm.storiesundefined。爲什麼? - $http.get('/api/');不返回任何數據。

但是,您可以通過更換vm.stories = responseStory.all()決心回調修正:

vm.stories = response || []; 

它會守護你的例外(類似於你)

編輯

還啓動stories(在控制器中)開頭爲:

var vm = this; 
vm.stories = []; 
+0

我已經根據你改變了代碼但這是顯示相同的錯誤 –

+0

Story.all() \t \t \t。然後(功能(響應){ \t \t \t \t \t \t \t vm.stories =響應| | []; \t \t \t}); –

+0

@MuneshKumar,這意味着你在初始化'stories'之前調用'push' –