我在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
});
}
答案 0 :(得分:0)
您可以将函数作为itemTemplate
参数传递,该参数将在每个列表元素即将呈现时调用。在此模板函数中,您可以检查它是否是最后一个元素,然后调用一些自定义逻辑。
有关模板功能的更多详细信息:https://msdn.microsoft.com/en-us/library/windows/apps/jj585523.aspx