将功能返回到另一个状态

时间:2016-04-10 03:46:38

标签: javascript angularjs angular-services

我一直在尝试将数据从一个控制器发送到另一个控制器。一点背景这是在离子应用程序中使用的代码,如果这有助于任何。我希望将send()函数中的数据发送到SubCtrl。在MainCtrl中调用send函数。我为此创建了一个服务,但数据仍然没有被共享。我完成这个动作我错过了什么?



    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>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

在阅读page之后,我能够解决这个问题。如果有人遇到类似的问题,我会鼓励这种阅读。此帖子上的视频链接也非常有用。