通过在角服务传递2个控制器之间的变种? [英] Passing a var between 2 controllers via a service in Angular?

查看:105
本文介绍了通过在角服务传递2个控制器之间的变种?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有2个控制器类似如下:

I have 2 controllers like the following:

.controller('DashCtrl', function($scope, GCs, GCDetails ) {
    $scope.getData = function(id)
    {
        GCs.get(id)
        .success(function(data){
            console.log(data); // it is getting the data correctly here.

            // I want to pass the data to 'GCDetailCtrl' controller
            GCDetails = data;
        });
    };
})

.controller('GCDetailCtrl', function($scope, GCs) {
     console.log(GCDetails); // I am getting an empty object
     $scope.itemDetails = GCDetails; //nothing in it
})

我试过很多方法,看到计算器多个线程,但我想不出是什么问题。

I tried many methods and saw many threads on stackoverflow but I couldn't figure out what is the problem.

我的服务是这样的:

.service('GCDetails', function () {
    return {};
});

我觉得我的服务是错误的,因为我总是返回一个空的对象。任何帮助吗?谢谢。

I feel like my service is wrong because I am always returning an empty object. any help please? thanks.

推荐答案

这应该工作,是我一直使用的服务是传递数据:

This should work, and is how I always use services to pass data around:

.service('GCDetails', function() {

  var myObj = {};

  this.setObject = function (val) {
    myObj = val;
  };

  this.getObject = function() {
    return myObj;
  };
});

另外,在你的控制器确保您拨打 GCDetails.setObject(yourvalue)从你的控制器,以便它实际上有一个值,当你调用 GCDetails .getObject()

Also in your controller make sure that you call GCDetails.setObject(yourvalue) from your controller so it actually have a value when you call GCDetails.getObject().

这篇关于通过在角服务传递2个控制器之间的变种?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆