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