junctoutjs-让选择显示可观察到的当前值作为默认值



这是小提琴:http://jsfiddle.net/bnxtm/1/

您可以看到,即使新顾问具有Commercial角色,SELECT会显示Consultant而不是Commercial。如何使选择元素显示顾问角色的名称?

值绑定比较对象引用与所选值匹配。

列表中的角色对象和所选对象没有共享相同的参考

http://jsfiddle.net/bnxtm/4/

var c1 = new Consultant("Foo BAR", ko.utils.arrayFirst(contractViewModel.availableRoles, function(item) {
    return item.tag === "Co";
}));

您可以做的是创建一个可与纯值一起使用的计算,而不是对象:

self.role   = ko.observable(role);
self.role.forSelect = ko.computed({
    read: function() {
        return self.role().tag;
    },
    write: function(newValue) {
        self.role(contractViewModel.getRole(newValue));
    }
});

这种方式role将永远是availableRoles中的对象之一。

请参阅http://jsfiddle.net/eckl9/

最新更新