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



我对 AngularJS 相当陌生,我意识到这个问题之前已经被问过(所以希望我不会被投票否决),但我无法找到符合我情况的问题。

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

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

如果您需要知道 - 我正在使用部分和路由参数在应用程序中导航并在页面之间传递一些简单的 ID。

我建议使用服务。

如果你想要股票持久数据,我建议使用这个 https://github.com/Zmetser/localstorageservice

此模块使用localStorage(文档)(如果您使用 IE,则使用 cookie)

未经测试的示例:

服务内容

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'));
});

最新更新