处理和呈现WinJS绑定时的回调

时间:2015-06-09 08:27:48

标签: javascript winjs

我在Cordova应用程序中使用WinJS。在页面上,我有WinJS.UI.ListView绑定到视图模型。

在页面ready事件处理程序中,我通过调用WinJS.Binding.processAll将视图模型绑定到页面,后者返回Promise。但是,当触发success回调时,元素实际上没有被渲染,ListView仍然是空的(如果你让它继续运行它会渲染)。

在这种情况下,我想找到列表中特定项目的偏移量。问题是在渲染绑定控件时是否有实际“通知”的方法。

<div id="rootElement">
    <div class="hidden" id="exerciseListTemplate" data-win-control="WinJS.Binding.Template">
        <div class="exercise">
            <span data-win-bind="textContent: name"></span>
        </div>
    </div>

    <div data-win-control="WinJS.UI.ListView" 
         data-win-options="{ itemTemplate: select('#exerciseListTemplate'), layout: { type: WinJS.UI.GridLayout } }"
         data-win-bind="winControl.itemDataSource: content.dataSource"
         class="exercise-list">
    </div>
</div>

JavaScript的:

// view model (with data in real application)
_viewModel: { content: new WinJS.Binding.List() },

ready: function (element, options) {
    // bind view model to page
    WinJS.Binding.processAll(element, this._viewModel)
        .then(function () {
            // trying to access a list item will fail because
            // they haven't actually been rendered yet
            // e.g. $('.exercise-list .win-container').length returns 0
        });
}

1 个答案:

答案 0 :(得分:0)

您可以将函数作为itemTemplate参数传递,该参数将在每个列表元素即将呈现时调用。在此模板函数中,您可以检查它是否是最后一个元素,然后调用一些自定义逻辑。

有关模板功能的更多详细信息:https://msdn.microsoft.com/en-us/library/windows/apps/jj585523.aspx

相关问题