我在 kendo 旁边使用 i18next 库,并且在我的应用程序的 Kendo UI Web 部分中按预期工作没有问题,但移动端是另一回事。我认为我可以从 init 函数调用我的 i18n 函数,并让它毫无问题地填充我的模板属性中的“data-i18n”......但似乎在视图之后您无法访问任何视图元素完全构建/绑定...所以我尝试将 i18n 代码放入 ListView 的“DataBound”事件中,该事件确实有效,但这似乎每次呈现/刷新列表时都会执行很多不必要的代码。
关于如何更好地做到这一点的想法?因此,我什至还没有开始对布局进行本地化。
这是视图本身的模板:
<div id="dashboard-meeting"
data-role="view"
data-model="dashViewModel"
data-bind="events:{init:meetingListInit,show:meetingListShow}"
data-layout="drawer-layout"
data-title="By Meeting">
<ul id="meeting-list" class="meetingList"></ul>
<div class="no-data" style="display:none;">No Data</div>
</div>
这是列表的行项目模板...
<script type="script/x-kendo-template" id="meeting-item">
<a data-item-id="#=meetingID#" href="\#meeting-details?id=#=meetingID#" data-transition="slide:left">
<h3 class="time">#= startTime #</h3>
<h3 class="counts"><span class="hc" data-i18n="dashboard.headCountText"></span>: #=headCount# | Total: #=totalCount#</h3>
<h2>#=meetingName#</h2>
</a>
</script>
这是我的视图模型:
var dashViewModel = kendo.observable({
headCountText : "Head Count",
meetingListInit : function(e){
var meetingList = $("#meeting-list").kendoMobileListView({
dataSource: bymeetingData,
pullToRefresh: true,
template: $('#meeting-item').html(),
dataBound: function(e){
console.log("Data Bound");
i18n.init(lang_options).done(function() {
//dashViewModel.set("headCountText", $.t("dashboard.headCount"));
//console.log("this list init'd" , $.t("dashboard.headCount"))
//$("#meeting-list").i18n();
$(".hc").text($.t("dashboard.headCount"));
});
}
}).data("kendoMobileListView");
},
meetingListShow : function(e){
//bymeetingData.read();
$("#meeting-list").data("kendoMobileListView").refresh();
}
});
正如您在我的初始化代码中的注释中看到的那样,我什至尝试将“人数”的列表项元素的文本绑定到通过 init 函数本地化的数据模型文本字符串。但这不会绑定,所以我放弃了,走这条路。