首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据商店id检索商店

如何根据商店id检索商店
EN

Stack Overflow用户
提问于 2014-06-20 04:50:21
回答 3查看 112关注 0票数 0

我正在创建一个内存存储,如下所示

代码语言:javascript
复制
var someData = [
    {id:1, name:"One"},
    {id:2, name:"Two"}
];
store = new Memory({
            data: someData,
            id:”userStore”
});

我想知道是否有一种方法可以查询内存存储来根据id返回存储实例。喜欢

代码语言:javascript
复制
var storePresent = Memory.getById(“userStore”) 

类似于

代码语言:javascript
复制
dijit.registry.byId(); 

,它返回id指定的dijit实例。

EN

回答 3

Stack Overflow用户

发布于 2014-06-20 05:08:10

据我所知,没有您所描述的存储注册表。您需要自己在应用程序的控制器代码中对此进行编码。

商店是一个简单的对象。

您可以:

  1. 手动传递存储区代码。
  2. 编写注册表AMD模块(注意,此处是龙)。

这个规则的唯一例外是如果你已经使用dojox/app作为你的控制层。它有一些命名的存储能力。如果不是,我不建议使用重构。

票数 0
EN

Stack Overflow用户

发布于 2014-06-30 17:10:31

模块dojo/store/Memory中没有内存存储的内置静态存储库。如果你需要这样的东西,最简单的方法是编写内存存储的自定义工厂,它将保存对所有创建的存储的静态引用:

代码语言:javascript
复制
define(["dojo/store/Memory"], function(Memory){
  var repository = {}
  return {
    getStore: function(id) {
        return repository[id]
    },
    createStore: function(id, params) {
        var memory = new Memory(params)
        repository[id] = memory
        return memory
    }
  }
});

用法:

代码语言:javascript
复制
require(["modules/MemoryRepository"], function(MemoryRepository) {
  MemoryRepository.createStore("userStore", {data: someData})
  ...
  var userStore = MemoryRepository.getStore("userStore")
})

如果你要按需创建很多商店,你也应该考虑注销它们(从工厂中删除引用)。内存问题可能是没有提供开箱即用的东西的原因。

票数 0
EN

Stack Overflow用户

发布于 2014-06-30 18:48:01

正如其他回答者所说,商店没有特定的存储库或注册表。但是,通过使用dijit/registry::add()函数,也可以使用dijit/registry来存储引用,例如:

代码语言:javascript
复制
// Add to registry
registry.add(new Memory({
    id: "userStore",
    data: [{
        name: "Smith",
        firstname: "John"
    }, {
        name: "Doe",
        firstname: "John"
    }]
}));

然后,您可以使用dijit/registry::byId()函数来检索它,例如:

代码语言:javascript
复制
// Query the store by using the registry
var person = registry.byId("userStore").query({
    firstname: "John"
}).forEach(function(person) {
    console.log(person.firstname + " " + person.name);
});

完整的例子可以在JSFiddle上找到:http://jsfiddle.net/mn94f/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24315982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档