Ищем пример dojo.store с dijit.Tree over REST - PullRequest
3 голосов
/ 11 июля 2011

Я ищу пример из конца в конец, используя dojo.store с dijit.Tree вместо REST.

Существует много существующих примеров, в которых используется более старый API-интерфейс dojo, dojo.data.api, но не хватаетиспользующие dojo.store api.

Является ли причиной того, что dijit.Tree еще не полностью поддерживает dojo.store?Если да, то нужно ли использовать оболочку dojo.data.ObjectStore для инкапсуляции dojo.store для использования с dijit.tree?

Я видел один пример обхода этой проблемы путем расширения StoreFileCache: http://dojo -toolkit.33424.n3.nabble.com/New-object-store-and-dijit-Tree-td2680201.html

Является ли это рекомендуемым вариантом, или я

a) придерживайтесь dojo.data.api, пока dijit.Tree не поддержит dojo.store напрямую или

b) используйте dojo.data.ObjectStore упаковщик

Спасибо

Ответы [ 2 ]

3 голосов
/ 26 сентября 2011

Учитывая два описанных вами варианта, я бы сказал, что вопрос в том, насколько хорошо вы знаете различные API.

  • dojo.store более легкий и, возможно, более легкий для понимания,но обертка добавляет некоторые накладные расходы.Если вы думаете, что ваш проект будет жить долго, это, вероятно, лучший путь.
  • dojo.data - это устаревший API, который в конечном итоге будет постепенно прекращен.Если ваш проект недолговечный и основан только на dijit.Tree, это может быть вашим лучшим вариантом на данный момент.

Лично я бы пошел с dojo.store и написал свой собственный TreeStoreModelполучить лучшее из обоих миров.Этот подход очень похож на предложение Брайана.

В случае, если вам интересно, я написал пост из двух серий о , как использовать dijit.Tree с оберткой ObjectStore реализация бэкэнда JsonRest в PHP .

3 голосов
/ 26 сентября 2011

На сайте DTK теперь есть учебное пособие, которое, по-видимому, в значительной степени охватывает эту тему.

http://staging.dojotoolkit.org/documentation/tutorials/1.6/store_driven_tree/

Однако, поскольку я знаю, что связывание чего-либо без ответа считается плохой практикой, общая идея заключается в том, что вместо использования dojo.data.ObjectStore для обтекания, а затем, возможно, протолкнув его через ForestStoreModel, вы можете просто добавьте в свой dojo.store магазин, чтобы добавить методы, которые будет искать Дерево. Вот простой пример из учебника:

usGov = new dojo.store.JsonRest({
    target:"data/",
    mayHaveChildren: function(object){
        // see if it has a children property
        return "children" in object;
    },
    getChildren: function(object, onComplete, onError){
        // retrieve the full copy of the object
        this.get(object.id).then(function(fullObject){
            // copy to the original object so it has the children array as well.
            object.children = fullObject.children;
            // now that full object, we should have an array of children
            onComplete(fullObject.children);
        }, onError);
    },
    getRoot: function(onItem, onError){
        // get the root object, we will do a get() and callback the result
        this.get("root").then(onItem, onError);
    },
    getLabel: function(object){
        // just get the name
        return object.name;
    }
});

Стоит отметить, что в этом случае мы делаем некоторые предположения о том, как выглядят данные. Вам нужно знать, как ваши дети соотносят и настраивают методы, описанные ниже, для этой цели, но, надеюсь, довольно ясно, как это сделать для себя.

Вы также можете пока просто придерживаться dojo.data API, но этот подход определенно выглядит более легким. Он берет пару слоев из стека, и работа с настройкой магазина dojo.store становится намного проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...