【问题标题】:use variable of another controller angularJS with ionic将另一个控制器 angularJS 的变量与 ionic 一起使用
【发布时间】:2016-06-20 00:36:44
【问题描述】:

我想从另一个控制器访问变量任何正文帮助

我的代码

app.controller('MapCtrl',function($scope, $state, $cordovaGeolocation) {
    $scope.search_item = function($event,item){
        console.log(item);
        var lat = item.lat;
        var lng = item.lng;      
    }
});

app.controller("homeCtrl", function($scope,$http, $filter ){

});

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    您可以设置一个在两个控制器之间“共享”变量的服务。

    在app/目录(app.js所在的位置)下创建一个文件:services.js

       angular.module('app.services', [])
    
         .service('var_transfer_service', function(){
              var test_var;              
    
              return {
                 getVar: function () {
                    return test_var;
               },
                 setVar: function( _test_var ) {
                    test_var = _test_var;
                }
            }
       })
    

    现在将此服务注入需要变量共享的控制器中:

    app.controller('MapCtrl',function($scope, $state, $cordovaGeolocation, var_transfer_service) {
      $scope.search_item = function($event,item){
        console.log(item);
        var lat = item.lat;
        var lng = item.lng;
    
        var_transfer_service.setVar(lat);       
      }
    });
    
    app.controller("homeCtrl", function($scope,$http, $filter, var_transfer_service ){
       var transferred_var = var_transfer_service.getVar();    
       // transferred_var will now equal 'lat' from the other controller
    });
    

    您可以进一步修改 services.js 中的函数定义和控制器中的函数调用以容纳更多变量。

    确保将 services.js 模块也添加到您的应用中:

    angular.module('app', ['ionic', 'app.controllers', 'app.services'])
    

    【讨论】:

    • 它设置了值,我可以在控制台中读取它,但在 getVar 中它是未定义的,,,,请帮助
    • 如果在您设置变量并再次尝试获取它的时间之间发生页面刷新,它将不起作用并且将是未定义的。该服务不通过页面刷新来存储数据。如果需要,您可以使用本地存储临时保存数据。
    猜你喜欢
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 2014-10-19
    • 2013-05-21
    • 2015-08-18
    • 1970-01-01
    相关资源
    最近更新 更多