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}


我想我对某事有一个误解。。。谢谢

您可以执行以下操作之一:

  • 将逻辑移到服务
  • 对两种状态使用一个具有一个控制器的父状态
  • 将值作为参数传递给状态
  • 示例#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;
    }
    归还这个;
    });
    
    您可以执行以下操作之一:

  • 将逻辑移到服务
  • 对两种状态使用一个具有一个控制器的父状态
  • 将值作为参数传递给状态
  • 示例#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传递,但是