0

请帮我解决knockout.js问题:

为什么变量 currentObject 未定义?如何将当前选定的对象保存在某个变量中?

我已经关注下拉列表的 html 视图:

 <select data-placeholder="Select object" class="span5" id="objects" data-bind="options: objects, optionsText: 'Name', optionsValue: 'Id', value: currentObject">
                    <option></option>
 </select>

模型视图:

function baseViewModel() {
    self.objects = ko.observableArray([]);

    ...

    self.currentObject = ko.observable();

    ...



    self.func = function() {

        //allert(self.objects()[0].Name) //return correct Name
        alert(self.currentObject().Name) //returns undefinded


    }

}
4

1 回答 1

0

在您的数据绑定中,您确实会在 currentObject 和选择的valuevalue: currentObject之间进行双向绑定。

选择的值设置为Id所选选项对象的字段(因为optionsValue: 'Id'在您的数据绑定中)。因此,currentObject 将被设置为所选对象的 Id 字段,这就是为什么这样做.Name会让你不确定。

我建议完全不要使用optionsValue,这样 KO 将处理该值,并且好像选择框的值是实际选择的对象,value: currentObject并将正确地将 currentObject 设置为选择的对象。(如果您确实想使用optionsValue,那么要知道 currentObject 将被设置为对象的字段,而不是对象本身)

小提琴:http: //jsfiddle.net/antishok/KXhem/78/

于 2012-10-27T15:12:25.170 回答