Javascript 在控制器之间传递数据的最佳实践(在这种情况下)-服务或路由图?

Javascript 在控制器之间传递数据的最佳实践(在这种情况下)-服务或路由图?,javascript,angularjs,angularjs-service,angularjs-routing,Javascript,Angularjs,Angularjs Service,Angularjs Routing,我对AngularJS还很陌生,我意识到这个问题以前有人问过(所以希望我不会被否决),但我一直找不到一个与我的情况相匹配的问题 我想将搜索数据(大约4个字段)从搜索页面(MyHomeCtrl)传递到ListingCtrl。listingCtrl已经使用工厂/服务根据API传递的内容获取信息(目前我已经硬编码了数据) 现在我读到的所有东西都说使用另一台服务器/传真机在搜索页面和列表页面之间传递数据,但是(如果我遗漏了什么,请原谅)为什么不将这些额外的参数作为routeParams传递呢 如果你需要

我对AngularJS还很陌生,我意识到这个问题以前有人问过(所以希望我不会被否决),但我一直找不到一个与我的情况相匹配的问题

我想将搜索数据(大约4个字段)从搜索页面(MyHomeCtrl)传递到ListingCtrl。listingCtrl已经使用工厂/服务根据API传递的内容获取信息(目前我已经硬编码了数据)

现在我读到的所有东西都说使用另一台服务器/传真机在搜索页面和列表页面之间传递数据,但是(如果我遗漏了什么,请原谅)为什么不将这些额外的参数作为routeParams传递呢


如果你需要知道,我正在使用partials和route参数在应用程序中导航,并在页面之间传递一些简单的ID。

我建议使用服务

如果您想要股票持久性数据,我建议使用

此模块使用
localStorage
()(如果使用IE,则使用cookies)

未经测试的示例:

服务

myApp.service('controllerSharingData', function() {
  var __variables = {};

  return {
   get: function(varname) {
    return (typeof __variables[varname] !== 'undefined') ? __variables[varname] : false;
   },
   set: function(varname, value) {
    __variables[varname] = value;
   }
  };
});
控制器

myApp.controller('IndexCtrl', function($scope, controllerSharingData) {
  controllerSharingData.set('toto', 'hello world');
});

myApp.controller('ListCtrl', function($scope, controllerSharingData) {
  alert(controllerSharingData.get('toto'));
});

如果是单页应用程序,请使用该服务的共享数据,因为它将持续存在。否则,使用参数。@tymeJV我有3个部分通过一个ng视图-所以我猜它会被归类为单页?是的,应该将数据存储在服务/工厂中-比路由参数IMOnope简单得多。路线参数很公平。想象一下,若你们打开一个带有这些参数的url,它会工作,而若你们把它保存在服务共享中,它就不会工作了。如果有几十个字段,我同意,但是4个字段太小了。服务共享。例如,ui路由器就是一个很好的例子谢谢-这将把我带入一场可怕的“工厂和服务之间的区别是什么”的辩论!Np;)最好的答案是: