【发布时间】:2017-02-27 23:15:01
【问题描述】:
我将 Typescript 与 KnockoutJs 一起使用,但在绑定 optionsText 和 optionsValue 时遇到问题。型号为:
export interface LanguageProxy {
ID: number;
Name: string;
Code: string;
IsSparse: boolean;
HasAudio: boolean;
ReadsRightToLeft: boolean;
IsAsian: boolean;
ShortCode: string;
LongCode: string;
CultureCode: string;
IsEnabled: boolean;
IsCustom: boolean;
}
我们将绑定设置为(响应是来自网络服务调用的响应):
var langs = ko.observableArray([]);
response.LanguageProxyListResult.forEach(lang => {
langs.push(ko.observable(lang));
});
this.Languages = langs;
ko.applyBindings(this, jQuery("#QuickSearchContainer")[0]);
我们正在使用以下 HTML 进行绑定:
<select name="ddlLanguage" id="ddlLanguage" class="LanguageList"
data-bind="options: Languages,
optionsText: 'Name',
optionsValue: 'ID',
optionsCaption: 'Choose...',
optionsAfterRender: function (e) { jQuery('#ddlLanguage')[0].selectedIndex = 1;}">
</select>
数据绑定正确,去掉optionsText和optionsValue返回[object] [OBJECT]的列表,但是添加optionsText和value的属性时会设置一个空白列表。
查看 chrome 的 knockoutJs 上下文调试器,数据正确显示在元素中(在 $data.Languages.Symbol(_latestValue) 和已解析的上下文下)。从根本上说我做错了什么吗?
【问题讨论】:
标签: javascript typescript knockout.js