问题是关于optionsText绑定以获取fullName。
当我这样做时,它有效as in Knockout doc,
private class MyWebChromeClient extends WebChromeClient {
@Override
public void onConsoleMessage(String message, int lineNumber, String sourceID) {
Log.d(TAG, message + " -- From line "
+ lineNumber + " of "
+ sourceID);
}
}
但是当我将该功能移动到View Model并尝试使用它时不起作用,
这是我的选择,
<select multiple="multiple" width="50" data-bind="options: leftItems,optionsText: function(item) {return item.firstName() + ' ' + item.lastName() }, selectedOptions:leftSelectedItems"></select>
在我的视图模型中,
<select multiple="multiple" width="50" data-bind="options: leftItems,optionsText: returnFullName(item), selectedOptions:leftSelectedItems"></select>
我得到的错误是“Uncaught ReferenceError:无法处理绑定”选项:function(){return leftItems}“这甚至与optionText无关。
我错过了什么吗?
答案 0 :(得分:1)
你不需要像往常一样传递它。但是你可以遵循这些方法中的任何一种。
您只需调用viewmodel函数,第一个参数将隐式具有$ data参数。
<select multiple="multiple" width="150" data-bind="options: names,optionsText: returnFullName"></select>
并在VM中
self.returnFullName = function(item) {
console.log(item);
return item.firstName + " " + item.lastName;
};
的jsfiddle: -
http://jsfiddle.net/mtfv6q6a/10/
绑定$ data并像你一样传递它。
<select multiple="multiple" width="150" data-bind="options: names,optionsText:returnFullName.bind($data);"></select>
的jsfiddle: -
http://jsfiddle.net/mtfv6q6a/42/
您可以将其包装在函数调用中并像这样调用: -
<select multiple="multiple" width="150" data-bind="options: names,optionsText:function(data){ return returnFullName(data);}"></select>
的jsfiddle: -