Ionic:在控制器之间传递数组元素
Ionic: Passing array elements between controllers
我有一个控制器和视图,用于计算和显示特定元素。当我单击视图上的一个按钮时,我想打开另一个显示有关该项目的更多信息的按钮。
将元素传递给另一个控制器进行显示的最佳方式是什么?
非常感谢
您可以构建一项服务,从一个控制器获取数据并将其传递给另一个控制器,如下所示:
.factory('shareData', function(){
var finalData;
return {
sendData: function(data) {
finalData = data;
},
getData: function() {
return finalData;
}
}
});
您的另一个选择是在您的主控制器中创建一个共享变量('app' ionic 中的控制器)
.controller('app', function($scope){
$scope.data;
})
.controller('app.controller1', function($scope){
$scope.data = "Hello World";
})
.controller('app.controller2', function($scope){
console.log($scope.data); //Hello World
});
除了 Matan Gubkin 包含的选项之外,还有一个选项是将数组包含在 $rootScope 中:这样您就可以从任何地方访问它。
@Matan Gubkin 的想法很接近,但您应该使用该服务来获取您想要的特定项目。
.factory('shareData', function(){
var finalData = ["Hello World",'more data'];
return {
sendData: function(data) {
finalData = data;
},
getData: function() {
return finalData;
},
getItem:function(_id) {
return finalData[_id];
}
}
});
然后在设置您的控制器
.controller('app.controller', function($scope){
})
.controller('app.controller-list', function($scope,shareData){
$scope.data = shareData.getData();
})
.controller('app.controller-detail', function($scope,$stateParams,shareData){
// use stateParams to get index
console.log(shareData.getItem($stateParams.index)); //
});
设置你的路线
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('app', {
url: "/app",
abstract: true,
controller: 'app.controller'
})
.state('app.controller-list', {
url: "/list",
})
.state('app.controller-detail', {
url: "/detail/:index", // <-- pass in index as stateParam
});
// if none of the above states are matched, use this as the fallback
$urlRouterProvider.otherwise('/app/list');
});
我有一个控制器和视图,用于计算和显示特定元素。当我单击视图上的一个按钮时,我想打开另一个显示有关该项目的更多信息的按钮。
将元素传递给另一个控制器进行显示的最佳方式是什么?
非常感谢
您可以构建一项服务,从一个控制器获取数据并将其传递给另一个控制器,如下所示:
.factory('shareData', function(){
var finalData;
return {
sendData: function(data) {
finalData = data;
},
getData: function() {
return finalData;
}
}
});
您的另一个选择是在您的主控制器中创建一个共享变量('app' ionic 中的控制器)
.controller('app', function($scope){
$scope.data;
})
.controller('app.controller1', function($scope){
$scope.data = "Hello World";
})
.controller('app.controller2', function($scope){
console.log($scope.data); //Hello World
});
除了 Matan Gubkin 包含的选项之外,还有一个选项是将数组包含在 $rootScope 中:这样您就可以从任何地方访问它。
@Matan Gubkin 的想法很接近,但您应该使用该服务来获取您想要的特定项目。
.factory('shareData', function(){
var finalData = ["Hello World",'more data'];
return {
sendData: function(data) {
finalData = data;
},
getData: function() {
return finalData;
},
getItem:function(_id) {
return finalData[_id];
}
}
});
然后在设置您的控制器
.controller('app.controller', function($scope){
})
.controller('app.controller-list', function($scope,shareData){
$scope.data = shareData.getData();
})
.controller('app.controller-detail', function($scope,$stateParams,shareData){
// use stateParams to get index
console.log(shareData.getItem($stateParams.index)); //
});
设置你的路线
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('app', {
url: "/app",
abstract: true,
controller: 'app.controller'
})
.state('app.controller-list', {
url: "/list",
})
.state('app.controller-detail', {
url: "/detail/:index", // <-- pass in index as stateParam
});
// if none of the above states are matched, use this as the fallback
$urlRouterProvider.otherwise('/app/list');
});