locked
flipview и WinJS.xhr не работают вместе (Javascript) RRS feed

  • Вопрос

  • Если написать json в коде то все работает. Выглядит вот так.

    (function () {
       "use strict";
        var dataArray = [
                    { type: "item", title: "Cliff", picture: "images/Cliff.jpg" },
                    { type: "item", title: "Grapes", picture: "images/Grapes.jpg" },
                    { type: "item", title: "Rainier", picture: "images/Rainier.jpg" },
                    { type: "item", title: "Sunset", picture: "images/Sunset.jpg" },
                    { type: "item", title: "Valley", picture: "images/Valley.jpg" }
        ];

        var dataList = new WinJS.Binding.List(dataArray);
        WinJS.Namespace.define("DataGallery", { dataArray: dataList });

    })();

    Но у меня задача брать json с сайта. И flipview никак не хочет работать в связке с WinJS.xhr. Делаю так.

    (function () {
       "use strict";

        WinJS.xhr({
            url: "http://domen.ru/text.json"
        }).done(
            function completed(result) {
                if (result.readyState == 4 && result.status === 200) {
                    var dataArray = result.responseText;

    var dataList = new WinJS.Binding.List(dataArray);
        WinJS.Namespace.define("DataGallery", { dataArray: dataList });

                }
            }
        );

    })();

    При последнем варианте все время выдается ошибка. Подскажите пожалуйста, как должен правильно выглядеть этот кусок кода.

    Заранее спасибо.

    24 июня 2013 г. 15:35

Ответы

  • Вопрос решен. Надо использовать 

    var dataArray = JSON.parse(result.responseText);
    var dataList = new WinJS.Binding.List(dataArray);
    var listControl = galleryList.winControl;
     listControl.itemDataSource = dataList.dataSource;

    вместо 

    WinJS.Namespace.define("DataGallery", { dataArray: dataList });

    25 июня 2013 г. 13:48

Все ответы

  • Так вы вроде с сайта берёте текст, вам надо его преобразовать в объект. Для этого надо воспользоваться методом JSON.Parse. Примерно так получается:

    var dataArray = JSON.Parse(result.responseText);


    Сделаем содержимое сообщества лучше, вместе!

    24 июня 2013 г. 19:20
  • Нет к сожалению ошибка ни в этом( Если я делаю, как вы говорите все равно не работает...

    Не работает почему то даже вот в таком виде:

    (function () {
        "use strict";

        WinJS.xhr({
            url: "http://domen.ru/text.json"
        }).done(
            function completed(result) {
                if (result.readyState == 4 && result.status === 200) {

                    var dataArray = [
                    { type: "item", title: "Cliff", picture: "images/Cliff.jpg" },
                    { type: "item", title: "Grapes", picture: "images/Grapes.jpg" },
                    { type: "item", title: "Rainier", picture: "images/Rainier.jpg" },
                    { type: "item", title: "Sunset", picture: "images/Sunset.jpg" },
                    { type: "item", title: "Valley", picture: "images/Valley.jpg" }
                    ];

                    var dataList = new WinJS.Binding.List(dataArray);
                    WinJS.Namespace.define("DataGallery", { dataArray: dataList });
                }
            }
        );
    })();

    Т.е не получается вызвать flipView нигде, кроме как в самом верхнем уровне. Почему так происходит? 

    25 июня 2013 г. 6:49
  • Вопрос решен. Надо использовать 

    var dataArray = JSON.parse(result.responseText);
    var dataList = new WinJS.Binding.List(dataArray);
    var listControl = galleryList.winControl;
     listControl.itemDataSource = dataList.dataSource;

    вместо 

    WinJS.Namespace.define("DataGallery", { dataArray: dataList });

    25 июня 2013 г. 13:48