2017-05-06 6 views
0

私はbecouseエラーを取得する必要があり、これは物語のファイルの私のコントローラが財産コントローラに未定義の「プッシュ」とそのサービスを読み込むことができません

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); 
       } 
      }); 
     }); 
    } 

    }; 

}); 

です私は角度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/');はデータを返しません。それは例外(あなたに似た)

も開始

EDITからあなたを守ってくれます

vm.stories = response || []; 

しかし、あなたがStory.all()解決コールバック内vm.stories = responseを置き換えることによって、それを修正することができますstories(コントローラ内):

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

は、私はあなたに応じてコードを変更していたが、これは同じエラー –

+0

を表示Story.allである()=応答 \t \t \t .then(機能(応答){ \t \t \t \t \t \t \t vm.stories | | []; \t \t \t}); –

+0

@MuneshKumarは、 'stories'を初期化する前に' push'を呼び出すことを意味します –

関連する問題