Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Knockout.js 取消选择多个选择加载时未选择的选项_Knockout.js - Fatal编程技术网

Knockout.js 取消选择多个选择加载时未选择的选项

Knockout.js 取消选择多个选择加载时未选择的选项,knockout.js,Knockout.js,我正在为一个用户创建一个编辑表单,默认情况下,在多选模式中不会选择该用户的角色 有两个应用程序角色:“管理员”和“版主”。示例用户有1个角色“管理员”。默认情况下不选择此选项 html: 更新 创建了DependentToServable并将其映射到selectedOptions self.RoleIds = ko.dependentObservable(function () { return ko.utils.arrayMap(self.Roles(), function

我正在为一个用户创建一个编辑表单,默认情况下,在多选模式中不会选择该用户的角色

有两个应用程序角色:“管理员”和“版主”。示例用户有1个角色“管理员”。默认情况下不选择此选项

html:

更新 创建了DependentToServable并将其映射到selectedOptions

self.RoleIds = ko.dependentObservable(function () {
        return ko.utils.arrayMap(self.Roles(), function (role) {
            return role.Id;
        });
    });

工作版本:

淘汰需要按值比较所选选项,在本例中为
Id
optionsValue:'Id'
。您正在传递一个
Role
对象数组。您需要传递
Id
的数组:

var User = function () {
    ...
    self.Roles = ko.observableArray([1]);
};

问题在于
Roles
包含“full”对象,而它应该只包含值部分:

self.Roles = ko.observableArray([1]);

看看这里:

thanx!我已经创建了一个DependentToServable,它返回角色的所有ID。如果knockout使用optionsValue属性tho映射对象,那就太好了。@Bas:我同意-一致使用
optionsValue
会很好。先回答,但不是接受的答案+1从我这里。有人知道如何使用对象来代替ID吗?这里的关键是,通过指定
选项value:
您可以准确地设置列表绑定到什么,即使您的
选项:
绑定指向一个对象数组,我花了一段时间才掌握。这是关于DependentToServable的一个很好的提示。。真遗憾,我们不得不走这么长的路。。
var User = function () {
    ...
    self.Roles = ko.observableArray([1]);
};
self.Roles = ko.observableArray([1]);