Как связать JQuery Mobile с помощью Knockout и Upshot - PullRequest
2 голосов
/ 23 марта 2012

Я пытаюсь создать пользовательский интерфейс JQuery Mobile, который использует upshot для получения данных из сервиса, а затем использует Knockout.js для привязки значений к списку. Однако я могу заполнить данные, но мобильные стили JQuery не обрабатываются.

Вот мой код. Любая помощь в этом отношении будет очень признателен.

<h2>Projects (<span data-bind="text: projects().length"></span>)</h2>

<ul data-inset="true" data-bind="foreach: projects" data-role="listview" data-theme="e" data-dividertheme="c" data-filter="true"> 
    <li>
            <a href="#" data-bind="text: ProjectName"></a>
            Project Type : <label data-bind="text: ProjectType"></label>
            Description : <label data-bind="text: Description"></label>
    </li> 
</ul>       
<p></p>

@(Html.UpshotContext(bufferChanges: true).DataSource<ProjectServiceController>(x => x.GetProjects()))

<script type="text/javascript">
    $(function () {
        var dataSource = upshot.dataSources.Projects.refresh();
        var ProjectsViewModel = {
            projects: dataSource.getEntities()
        };

        ko.applyBindings(ProjectsViewModel);        
    });

</script>

1 Ответ

0 голосов
/ 25 марта 2012

Вызов refresh () является асинхронным, поэтому вы можете предоставить функцию обратного вызова, которая выполняется после обновления. Документы jQueryMobile говорят, что если вы добавляете элементы, вам нужно обновить представление списка после создания элементов: http://jquerymobile.com/demos/1.0.1/docs/lists/docs-lists.html

Вот пример того, как вы можете это сделать:

var dataSource = upshot.dataSources.Projects.refresh(function() {
    $("ul").listview('refresh');
});
...