Создавайте динамические страницы из Json, в Dojo - PullRequest
1 голос
/ 16 декабря 2011

У меня есть файл json

{
    Introduction: 
    [
        {
            title:   "Introduction",
            toolbar: "Page 1",
            content: "cont, aabitant morbi tristique..."
        },
        {
            title:   "about",
            toolbar: "Page 2",
            content: "contesent vel nisi ipsum..."
        },
        {
            title:   "services",
            toolbar: "Page 3",
            content: "Cras adipiscing sapien nec..."
        }
    ]
}

Я хочу создавать динамические страницы в Dojo mobile.Из вышеприведенного Json будут созданы три страницы с перемещением вперед и назад.У меня проблемы.Я читаю Json как:

  dojo.xhrPost({
        url: "start.json",
        handleAs: "json",
            var viewContainer = new dojox.mobile.ScrollableView({id:"viewContainer"});
        load: function(response) {
            for (key in response){
                        // creating each view heading and content here.........
                        //can you give some hint what should be here?
                    }
        }

Как я могу читать выше JSON и создавать динамические представления.Что можно заменить этой строкой в ​​коде //can you give some hint what should be here?

Ответы [ 3 ]

1 голос
/ 16 декабря 2011
here each key has three property that you define in json,now u can inject values to html view
by accessing property like this key.title,key.toolbar....,ex:- $('<p>' + key.title + '</p>');
1 голос
/ 16 декабря 2011

Во-первых, вы читаете JSON неправильно.dojo.xhrPost отправит данные на URL, указанный в параметре url: не извлекать файл в параметре url.Если вы сделаете это так, как вы делаете, вы получите ошибку «Unable to load start.json status: 500»

Итак, в вашем случае, чтобы прочитать файл, вывместо этого следует выполнить dojo.xhrGet.

Далее, ваша переменная viewContainer не должна размещаться таким образом, в середине аргументов (вы пишете код, смешанный в середине свойств объекта (!!!)).

Итак ... вы должны быть в состоянии выполнить то, что вы хотите, выполнив что-то вроде этого:

require(["dojo/dom-construct", 
    "dojo/_base/xhr", 
    "dojox/mobile/parser", 
    "dojox/mobile", 
    "dojox/mobile/ScrollableView", 
    "dojox/mobile/Heading"],
            function(domConstruct) {

                dojo.xhrGet({
                    url : 'start.json',
                    handleAs : "json",
                    load : function(response) {

                        dojo.forEach(response.Introduction, function(page){
                            var node = domConstruct.create("div", {id : page.title}, "viewsContainer", "last");
                            var view = new dojox.mobile.ScrollableView({
                                id : page.title
                            }, node);
                            view.addChild(new dojox.mobile.Heading({label : page.title}));
                            view.startup();
                        });
                    },
                    error : function(err) {
                        console.debug("Error : ", err);
                    }
                });
            }
        );
1 голос
/ 16 декабря 2011
 load: function(response) {
        for (key in response.Introduction){
                    // creating each view heading and content here.........
                }

 and try to debug data for key it should be any object that you pass 3 obj in json...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...