在knockout.js中设置组合的optionsText

Org*_*cat 10 javascript knockout.js

我想在我的optionsText字段中组合两个返回值,我认为这很简单,但我显然是错的.我还使用了普通视图模型之外的选项字段的值.这是原作:

<select style="width: 180px" data-bind="visible: false, value: fields.person, options: $root.extra.personList, optionsText: 'FirstName', optionsValue: 'LastName' }, select2: {}">
Run Code Online (Sandbox Code Playgroud)

这工作正常,显示人的FirstName并将值设置为LastName.

下一篇文章会抛出一个错误:

<select style="width: 180px" data-bind="visible: false, value: fields.person, options: $root.extra.personList, optionsText: function (item) { return item.FirstName() + '-' + item.LastName() }, optionsValue: 'LastName', select2: {}">
Run Code Online (Sandbox Code Playgroud)

未捕获的TypeError:对象#的属性'FirstName'不是函数

sro*_*oes 15

你确定FirstName和LastName是可观察的吗?如果你不确定,试试这个:

optionsText: function(item) { return ko.unwrap(item.FirstName) + '-' + ko.unwrap(item.LastName); }
Run Code Online (Sandbox Code Playgroud)

或者更好的是,在viewmodel中创建一个计算器:

self.FullName = function() {
    return ko.unwrap(self.FirstName) + '-' + ko.unwrap(self.LastName);
};
Run Code Online (Sandbox Code Playgroud)

和:

optionsText: 'FullName'
Run Code Online (Sandbox Code Playgroud)