KnockoutJS-将可观察值分配给JavaScript变量
我试图看看是否可以将一个JavaScript变量分配给一个KO可观测值的值 原因是我想将其作为属性分配给jquery模块 我知道我能做到:KnockoutJS-将可观察值分配给JavaScript变量,javascript,knockout.js,Javascript,Knockout.js,我试图看看是否可以将一个JavaScript变量分配给一个KO可观测值的值 原因是我想将其作为属性分配给jquery模块 我知道我能做到: var viewModel = { firstName : ko.observable("Bert"), lastName : ko.observable("Smith"), pets : ko.observableArray(["Cat", "Dog", "Fish"]), type : "Customer" };
var viewModel = {
firstName : ko.observable("Bert"),
lastName : ko.observable("Smith"),
pets : ko.observableArray(["Cat", "Dog", "Fish"]),
type : "Customer"
};
viewModel.hasALotOfPets = ko.computed(function() {
return this.pets().length > 2
}, viewModel)
var jsonData = ko.toJSON(viewModel);
但是,如果我不想要视图模型中的所有内容,该怎么办?我可以只选择n个项目吗?这里有两个概念:
ko.toJSON
将在一个子集视图模型上工作:
var n = 2;
var count = 0;
var subModel = {};
for (var k in viewModel) {
if (count >= n) break;
if (viewModel.hasOwnProperty(k)) {
subModel[k] = viewModel[k];
count++;
}
}
var jsonData = ko.toJSON(subModel);
如果只需要特定字段,请使用以下字段创建子集模型:
var jsonData = ko.toJSON({
firstName: viewModel.firstName,
type: viewModel.type
});
您想省略哪些项目?是否有足够的数量可以手动排除它们?不一定。这只是我提供的一个例子。但例如,我只想得到像firstName和type这样的名称。我只是想知道我是否只能得到select值。你也许可以用knockout映射插件做些什么,但我不知道我脑子里想的是什么语法
var jsonData = ko.toJSON({
firstName: viewModel.firstName,
type: viewModel.type
});