是否有人为数组类型手动构建元数据?例如,我只想绑定一个
列出selectedIds;
到客户端的元数据。然后我想将它绑定到一个对应于某些复选框值的数组。奇怪的是,当我创建我的新实体时,我发送给我的属性的值没有绑定并发送到服务器。
var registrationFormModel = ko.observable(); registrationFormModel({selectedIds:ko.observableArray(),name:ko.observable()});
稍后我将一个名称和selectedIds设置为一个int数组。但它没有映射到我的实体。有没有办法获得数组类型属性?
答案 0 :(得分:1)
您当然可以定义一个数据属性,它是一个简单值数组(例如,一个整数数组)。您还可以定义一个属性,它是一个“复杂类型”数组(正如Breeze理解的那样)。
这些是数组数据属性。它们不是集合导航属性。如果您想使用它们来获取和展示其隐含的相关实体,您必须自己管理它。
您没有告诉我们您如何在服务器上存储数据。您似乎没有使用关系数据库,因为RDB不支持数组属性。文档数据库(例如,MongoDb)DOES。
从微风的角度来看,这没关系。但是,如果我们要提供适当的帮助,请务必询问并了解您正在做的事情。
您的问题提醒我,我们的文档不包含数组数据属性。 “zza-node-mongo”示例确实说明了手工创建的元数据中的数组属性。
Here是整数FK ID数组的元数据定义的一个例子,这是你寻求的,对吗?
Here是不导航属性的复杂类型数组的示例。
此元数据样本依赖于Breeze Labs中的“metadata-helper”。这就是为什么您看到
hasMany: true
这是实际Breeze元数据等效的别名isScalar: false
。
答案 1 :(得分:-1)
目前我不认为你可以创建一个简单对象数组的属性。
您可以使用两种方法 -
将您的Id的集合作为具有名称/值对象的复杂类型从服务器传递下来 -
[{id: 1}, {id: 2}]
使用JsonResultsAdapter将简单数组映射到类似于上面提到的复杂类型 -
if (node.IntArray) {
var tempArray = [];
$.each(node.IntArray, function (index, item) {
tempArray.push({id: item});
}
node.IntArray = tempArray;
}