2016-04-10 4 views
0

Я пытаюсь отправить данные с одного контроллера на другой. Небольшой фон - это код, используемый в ионном приложении, если это помогает любому. Я хочу отправить данные из функции send() в SubCtrl. Функция отправки вызывается в MainCtrl. Я создал службу для этого, но данные по-прежнему не используются. Что мне не хватает для завершения этого действия?Передача возврата функции в другое состояние

var app = angular.module('testapp', []); 
 

 
    app.config(function($stateProvider, $urlRouterProvider) { 
 
     "use strict"; 
 

 
     /* Set up the states for the application's different sections. */ 
 
     $stateProvider 
 
     .state('page2', { 
 
      name: 'page2', 
 
      url: '/page2', 
 
      templateUrl: 'page2.html', 
 
      controller: 'MainCtrl' 
 
     }) 
 
     .state('page3', { 
 
      name: 'page3', 
 
      url: '/page3', 
 
      templateUrl: 'page3.html', 
 
      controller: 'SubCtrl' 
 
     }); 
 
     $urlRouterProvider.otherwise('/page2'); 
 

 
    }); 
 

 
    app.factory('dataShare', function($rootScope) { 
 
     var service = {}; 
 
     service.data = false; 
 
     service.sendData = function(data) { 
 
     this.data = data; 
 
     $rootScope.$broadcast('data_shared'); 
 
     console.log(data); 
 
     }; 
 
     service.getData = function() { 
 
     return this.data; 
 
     }; 
 
     return service; 
 
    }); 
 

 

 
    app.controller('MainCtrl', function($scope, $state, $http, dataShare) { 
 

 
     $scope.text = 'food'; 
 
     $scope.send = function() { 
 
     dataShare.sendData(this.text); 
 
     }; 
 

 

 
    }); 
 

 
    app.controller('SubCtrl', function($scope, $state, dataShare) { 
 
     "use strict"; 
 

 
     var sc = this; 
 

 
     $scope.text = ''; 
 
     $scope.$on('data_shared', function() { 
 
     var text = dataShare.getData(); 
 
     sc.text = dataShare.data; 
 
     }); 
 

 

 

 
    });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<script id="page2.html" type="text/ng-template"> 
 
    <div>{text}}</div> 
 
    <input type='text' ng-model='text' /> 
 
    <button class="button button-outline button-royal" ng-click="send();">add</button> 
 

 
</script> 
 

 
<script id="page3.html" type="text/ng-template"> 
 
    <div>text: {{text}}</div> 
 
</script>

ответ

0

Я был в состоянии понять этот вопрос после прочтения этой page. Если у кого-то есть подобная проблема, я бы рекомендовал это чтение. Также ссылка на видео на этом посту была действительно полезна.