Использование внешнего JSON в Sencha Touch XTemplate - PullRequest
0 голосов
/ 02 июня 2011

У меня маленькое приложение mvc asp.net работает, как и ожидалось, однако я неправильно собираю JSON.

Вот мой текущий способ создания объекта JSON для потребления в Sencha

        // note: this is using a RAZOR / C# foreach loop to build a JSON string
        var videosToShow = [
        @foreach (Web.Models.VideoListViewModel video in Model){
            @Html.Raw("{ id: " + @video.id + ",")
            @Html.Raw(" title: \"" + @video.title + "\" },")
        }
        ];

Тогда у меня есть шаблон Sencha

        videoTpl = new Ext.XTemplate([
            '<tpl for=".">',
            '<div>',
            '<iframe src="http://player.vimeo.com/video/{id}?title=0&amp;byline=0&amp;portrait=0&amp;color=80ceff&amp;fullscreen=1" ',
            'width="' + screenWidth + '" ',
            'height="' + screenHeight + '" ',
            'frameborder="0">',
            '</iframe>',
            '&nbsp;&nbsp;{title}',
            '</div>',
            '</tpl>'
        ]);

а также видеопанель

        videoPanel = new Ext.Panel({
            title: "Videos",
            tpl: videoTpl,
            iconCls: "tv",
            dockedItems: [{ xtype: "toolbar", title: "Videos"}],
            scroll: "vertical"
        });

и мой корневой TabPanel

        rootPanel = new Ext.TabPanel({
            fullscreen: true,
            layout: 'card',
            region: 'center',
            items: [videoPanel, biblePanel, aboutPanel, helpPanel, morePanel],
            tabBar: { dock: 'bottom' }
        });

        videoPanel.update(videosToShow);

Суть в том, что вышеприведенное работает просто отлично. Мне просто не нравится внутренняя строка JSON, я бы скорее отправил JSON с URL.

Возможно, я упускаю что-то простое, но любое влияние будет высоко оценено.

1 Ответ

0 голосов
/ 02 июня 2011

Сделайте это следующим образом:

var videosToShow = @Html.Raw(Json.Encode(Model));

или, конечно, если у вашей модели много свойств и вы хотите только id и title:

var videosToShow = @Html.Raw(Json.Encode(Model.Select(x => new { x.id, x.title })));

Это будетлучше / проще / короче / безопаснее / избегает спагетти-кода / без петель / работает.

РЕДАКТИРОВАТЬ Ответ найден в комментариях.

...