Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Can';无法在控制器之间共享对象_Angularjs_Ionic Framework - Fatal编程技术网

Angularjs Can';无法在控制器之间共享对象

Angularjs Can';无法在控制器之间共享对象,angularjs,ionic-framework,Angularjs,Ionic Framework,我正在尝试与工厂共享两个控制器之间的对象。我可以正确地存储对象,但当我试图从主控制器获取对象时,它会说该对象为空(未定义)。我希望得到一些反馈 var app = angular.module('wgot', ['ionic']) .config(function($stateProvider, $urlRouterProvider) { $stateProvider .state('splash', { url: "/", templateUrl: "t

我正在尝试与工厂共享两个控制器之间的对象。我可以正确地存储对象,但当我试图从主控制器获取对象时,它会说该对象为空(未定义)。我希望得到一些反馈

var app = angular.module('wgot', ['ionic'])

.config(function($stateProvider, $urlRouterProvider) {

  $stateProvider
    .state('splash', {
      url: "/",
      templateUrl: "templates/splashscreen.html"
    })

    .state('settings', {
      url: "/settings",
      templateUrl: "templates/settings.html"
    })

    .state('main', {
      url: '/main',
      templateUrl: 'templates/main.html'
    })

  $urlRouterProvider.otherwise('/');

})

.factory('TT', function(){
  var savedData = {}
  function set(data) {
    savedData = data;
  }
  function get() {
    return savedData;
  }
  return {
    set: set,
    get: get
  }
})

.controller('SettingsCtrl', function($scope, $http, TT){

  $scope.regions = [
    {name : 'United Arab Emirates', id : '23424738'}
    ];

  $scope.region = $scope.regions[0];

  $scope.requestTT = function() {
    $http.get(/* url */ + $scope.region.id).success(function (data){
      TT.set(data);
    })
  };
})
.controller('MainCtrl', function($scope, TT){
  //Here TT.get() doesn't return the value that I've stored previously
  $scope.words = TT.get();
  var words = [];
  var listLength = $scope.words.list[0]['trends'].length;
  for (var i = 0; i < listLength; i++) {
    words[i] = $scope.words.list[0]['trends'][i].name;
  };
  this.words = words;
});
var-app=angular.module('wgot',['ionic']))
.config(函数($stateProvider,$urlRouterProvider){
$stateProvider
.state('splash'{
网址:“/”,
templateUrl:“templates/splashscreen.html”
})
.state('设置'{
url:“/settings”,
templateUrl:“templates/settings.html”
})
.州('main'{
url:“/main”,
templateUrl:'templates/main.html'
})
$urlRouterProvider。否则('/');
})
.factory('TT',function(){
var savedData={}
功能集(数据){
savedData=数据;
}
函数get(){
返回savedData;
}
返回{
集:集,,
得到:得到
}
})
.controller('SettingsCtrl',函数($scope,$http,TT){
$scope.regions=[
{姓名:'阿拉伯联合酋长国',识别号:'23424738'}
];
$scope.region=$scope.regions[0];
$scope.requestTT=函数(){
$http.get(/*url*/+$scope.region.id).success(函数(数据){
TT.set(数据);
})
};
})
.controller('MainCtrl',函数($scope,TT){
//这里TT.get()不返回我以前存储的值
$scope.words=TT.get();
var-words=[];
var listLength=$scope.words.list[0]['trends'].length;
对于(变量i=0;i
以下是意见:

<ion-view class= "splashscreen" ng-controller="SettingsCtrl">
<ion-content class = "content" scroll="false">
<div class="bar bar-header bar-light">
  <h1 class="title">Settings</h1>
</div>
<div class="list card list-card">
    <label class="item item-input item-select">
      <div class="input-label">
        Country
      </div>
      <select ng-model="region" ng-options="region.name for region in regions">
        <option value="">-- choose a region --</option>
      </select>
    </label>
    <a class="item item-icon-right assertive" ui-sref="main" ng-click="requestTT()">
      <i class="icon ion-radio-waves"></i>
      Start receiving
    </a>
</div>
</ion-content>
</ion-view>

设置
国家
--选择一个地区--
开始接收
第二个控制器是无法获取对象的控制器

<ion-view class = "main">
  <ion-content>
    <div class="os-phrases" ng-controller="MainCtrl as main">
      <h2 ng-repeat="word in main.words" ng-bind-html='word | lettering'></h2>
    </div>
  </ion-content>
</ion-view>

我认为问题在于,当您从主控制器中的服务读取数据时,尚未向其分配任何内容,解决此问题的一种方法是在主控制器中查看服务中的数据:

$scope.$watch(TT.get,function(v){
   $scope.words = v;
})