Angularjs 角度:将数据传递给另一个控制器的服务

Angularjs 角度:将数据传递给另一个控制器的服务,angularjs,routes,angularjs-ng-repeat,Angularjs,Routes,Angularjs Ng Repeat,因此,我有一个重复的项目清单 <li><a ng-click="{{person.id}}">Name of Person</a></li> 人员姓名 我想创建一个服务,在其中单击,我可以收集person.id并以不同的路由将其传递给另一个控制器 这通常非常简单,只需使用url和route参数,但是,在这种情况下,person.id不能在浏览器url中公开 --更多上下文 无论是否为服务,我都需要提取一个{{person.Id}},它是通过人员

因此,我有一个重复的项目清单

<li><a ng-click="{{person.id}}">Name of Person</a></li>
  • 人员姓名
  • 我想创建一个服务,在其中单击,我可以收集person.id并以不同的路由将其传递给另一个控制器

    这通常非常简单,只需使用url和route参数,但是,在这种情况下,person.id不能在浏览器url中公开

    --更多上下文

    无论是否为服务,我都需要提取一个{{person.Id}},它是通过人员列表页面上的ng repeat可用的数据

    单击后,我从人员控制器移动到带有“人员”控制器的新路线。我需要那个“person”控制器能够拉取在上一个路由上单击的{{person.ID}},以便在数据库中查找那个人


    任何帮助都会非常好

    Angular中的所有服务都是单例服务。因此,如果在多个控制器中注入
    personService
    或类似的内容,那么这些控制器将使用完全相同的对象。因此,如果您在该服务上设置了一个值,那么其他控制器将能够看到它


    有了更多的代码和上下文,我将能够给出一个更具体的示例。

    服务并不意味着直接与DOM元素交互。DOM应该与指令/控制器交互。控制器应该与模型交互

    下面的示例演示如何将数据从控制器1发送到myFactory,然后控制器2从myFactory获取值

    angular
    .module('应用程序',[])
    .factory(“我的工厂”,我的工厂)
    .controller('myCtrl1',myCtrl1)
    .控制器(“myCtrl2”,myCtrl2);
    函数myFactory(){
    var fromssender=null;
    返回{
    setSender:函数(发送器){
    fromSender=发送方;
    },
    getSender:function(){
    发信人的回信;
    }
    };
    }
    功能myCtrl1(myFactory){
    var vm=这个;
    vm.setSender=myFactory.setSender;
    }
    函数myCtrl2(myFactory){
    var vm=这个;
    vm.getSender=myFactory.getSender;
    }
    
    控制器1:
    送到我的工厂
    控制器2:
    通过myFactory从ctrl1获取的值:{{ctrl2.getSender()}
    为什么不在URL中显示个人ID?这不是密码,只是身份证。是的,奇怪的接受标准。这就是我过去所做的,也是我的第一个倾向。但是它被给了一个大大的“不”字。但是。。。为什么?这基本上是唯一正确的方法。如果您不这样做,并且刷新页面,或者为其添加书签以备将来使用,或者通过电子邮件发送其URL,那么它将失败。我觉得给你这些标准的人不明白网络是如何工作的。你完全正确。这太棒了!感谢您在这方面的帮助/澄清。