0

我有一个这样的模板:

<tbody id="departureTemplate" data-win-control="WinJS.Binding.Template">
<tr >
    <td>
        <span data-win-bind="innerText: timezone_scheduled_departure_time "></span> <span class="small" data-win-bind="innerText: flights_joined"></span>
    </td>

    <td>
        <span data-win-bind="innerText: destination_joined"></span> <span class="small" data-win-bind="innerText: airline_names_joined"></span>
    </td>

    <td>
        <span data-win-bind="innerText: remarkstr"></span> Värav <span class="small" data-win-bind="innerText: gate"></span>
    </td>
</tr>
</tbody>

和这样的代码:

var departureData = JSON.parse(response.responseText);
var departureBinding = new WinJS.Binding.List(departureData);

var tableBody = document.getElementById("departureTemplate");
var template = document.getElementById("departureTemplate").winControl;

var showItems = 4;
var currentItems = 0;

departureBinding.forEach(function (item) {
    if (currentItems < showItems) {
        template.render(item, tableBody);
    }

    currentItems++;
});

但我的问题是第一个渲染的 TR 没有数据。其他渲染就好了。如果我在发送到 template.render 之前注销数据,则它具有所有需要的值。

知道是什么导致了这种行为吗?

4

2 回答 2

0

绑定模板(WinJS.Binding.Template 控件)旨在与 ListView 和 FlipView 控件一起使用。

我建议查看主题如何使用模板绑定数据(使用 JavaScript 和 HTML 的 Windows 应用商店应用程序),它演示了它是如何工作的。

使用 ListView 和一些 CSS 样式,您应该能够获得与使用 table 元素相同的外观,并且代码更少,灵活性更高。

希望有帮助。

有关 Windows 应用商店应用开发的更多信息,请注册App Builder

于 2013-03-08T19:50:19.303 回答
0

你在理论上对这种情况很好(有点)。我会单独定义您的模板,因为您的模板表应该是这样的 - 您的模板表并与您渲染的实体分开,否则如果您直接渲染到它,您真的会破坏您的模板,这可能是您看到第一行消失的原因因为它被您的模板数据占用。

只需将其添加到您的表格下方:

<table>
    <tbody id="airlineData"></tbody>
</table>

并更改您的表格主体以指向新表格。

var tableBody = document.getElementById("airlineData");

让我知道这是否适合你。

于 2013-03-08T21:06:30.313 回答