将函数的返回传递到另一个状态

Passing return of function to another state

本文关键字:另一个 状态 函数 返回      更新时间:2024-04-25

我一直在尝试将数据从一个控制器发送到另一个控制器。一个小背景,这是离子应用程序中使用的代码,如果有帮助的话。我希望将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>

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

相关文章: