Javascript Can';t使用相同的控制器1通过状态传递数据
我在第一页有一个值,点击一个按钮后我想进入第二页并在屏幕上显示该值。两个页面共享同一个控制器,但我发现在更改页面时会创建另一个作用域 这是我的密码:Javascript Can';t使用相同的控制器1通过状态传递数据,javascript,angularjs,ionic-framework,Javascript,Angularjs,Ionic Framework,我在第一页有一个值,点击一个按钮后我想进入第二页并在屏幕上显示该值。两个页面共享同一个控制器,但我发现在更改页面时会创建另一个作用域 这是我的密码: .config(function($stateProvider, $urlRouterProvider) { $stateProvider .state('app', { url: "/app", abstract: true, templateUrl: "templates/tabs.html", controller: 'Ap
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('app', {
url: "/app",
abstract: true,
templateUrl: "templates/tabs.html",
controller: 'AppCtrl'
})
.state('app.one', {
url: "/one",
views: {
'home-tab': {
templateUrl: "templates/home.html",
controller: 'AppCtrl'
}
}
})
.state('app.two', {
url: "/two",
views: {
'home-tab': {
templateUrl: "templates/facts.html",
controller: 'AppCtrl'
}
}
});
$urlRouterProvider.otherwise("/app/one");
})
控制器:
.controller('AppCtrl', function($scope) {
$scope.save = function(){
$scope.var = "foo";
}
});
第一页只有一个执行$scope.save的按钮,第二页有一个表达式{{var}
我想我对某事有一个误解。。。谢谢 您可以执行以下操作之一:
angular.module('app'[
“ui.router”
])
.config(函数($stateProvider,$urlRouterProvider){
$urlRouterProvider。否则('/home');
$stateProvider
.州(“家”{
url:“/home”,
模板:“一二”,
控制器:功能($scope,myService){
$scope.var=myService.getVar();
$scope.$watch('var',myService.setVar);
}
})
.州(‘一’{
url:“/one”,
控制器:功能($scope,myService){
$scope.var=myService.getVar();
},
模板:“{var}}}Back”
})
.州(“两个”{
url:“/two”,
控制器:功能($scope,myService){
$scope.var=myService.getVar();
},
模板:“{var}}}Back”
});
})
.service('myService',function()){
var self=这个;
this.getVar=函数(){
返回self.var;
}
this.setVar=函数(v){
self.var=v;
}
归还这个;
});代码>
您可以执行以下操作之一:
将逻辑移到服务
对两种状态使用一个具有一个控制器的父状态
将值作为参数传递给状态
示例#1:
angular.module('app'[
“ui.router”
])
.config(函数($stateProvider,$urlRouterProvider){
$urlRouterProvider。否则('/home');
$stateProvider
.州(“家”{
url:“/home”,
模板:“一二”,
控制器:功能($scope,myService){
$scope.var=myService.getVar();
$scope.$watch('var',myService.setVar);
}
})
.州(‘一’{
url:“/one”,
控制器:功能($scope,myService){
$scope.var=myService.getVar();
},
模板:“{var}}}Back”
})
.州(“两个”{
url:“/two”,
控制器:功能($scope,myService){
$scope.var=myService.getVar();
},
模板:“{var}}}Back”
});
})
.service('myService',function()){
var self=这个;
this.getVar=函数(){
返回self.var;
}
this.setVar=函数(v){
self.var=v;
}
归还这个;
});代码>
您可以使用对象为{var:$scope.var}的$stateParams
$state.go('app.two',{var:$scope.var})
angular.module('ionicApp',['ionic']))
.config(函数($stateProvider,$urlRouterProvider){
$stateProvider
.state('应用程序'{
url:“/app”,
摘要:没错,
templateUrl:“templates/tabs.html”,
控制器:“AppCtrl”
})
.state('应用程序一'{
网址:“/one”,
观点:{
“主页选项卡”:{
templateUrl:“templates/home.html”,
控制器:“AppCtrl”
}
}
})
.state('应用程序二'{
url:“/two/:var”,
观点:{
“主页选项卡”:{
templateUrl:“templates/facts.html”,
控制器:“AppCtrl”
}
}
});
$urlRouterProvider。否则(“/app/one”);
})
.controller('AppCtrl',函数($scope、$state、$stateparms){
$scope.platform=ionic.platform.platform();
$scope.save=函数(){
$scope.var=“foo”;
$state.go('app.two',{var:$scope.var});
}
$scope.var=$stateParams.var;
});代码>
选项卡示例
下一个
单击以在“$scope.var”中保存值
{{var}
这里应该是var->{{var}的值
爱奥尼亚和爱奥尼亚平台和爱奥尼亚平台设置平台(“安卓”);
您可以使用对象为{var:$scope.var}的$stateParams
$state.go('app.two',{var:$scope.var})
angular.module('ionicApp',['ionic']))
.config(函数($stateProvider,$urlRouterProvider){
$stateProvider
.state('应用程序'{
url:“/app”,
摘要:没错,
templateUrl:“templates/tabs.html”,
控制器:“AppCtrl”
})
.state('应用程序一'{
网址:“/one”,
观点:{
“主页选项卡”:{
templateUrl:“templates/home.html”,
控制器:“AppCtrl”
}
}
})
.state('应用程序二'{
url:“/two/:var”,
观点:{
“主页选项卡”:{
templateUrl:“templates/facts.html”,
控制器:“AppCtrl”
}
}
});
$urlRouterProvider。否则(“/app/one”);
})
.controller('AppCtrl',函数($scope、$state、$stateparms){
$scope.platform=ionic.platform.platform();
$scope.save=函数(){
$scope.var=“foo”;
$state.go('app.two',{var:$scope.var});
}
$scope.var=$stateParams.var;
});代码>
选项卡示例
下一个
单击以在“$scope.var”中保存值
{{var}
这里应该是var->{{var}的值
爱奥尼亚和爱奥尼亚平台和爱奥尼亚平台设置平台(“安卓”);
最好的解决方案是将变量作为stateparm传递,但是