问题标签 [knockout-mapping-plugin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4023 浏览

javascript - 使用 updateFromJS 正在替换应该添加的值

我有这个代码:

上面的 AJAX 调用返回:

这工作正常。稍后,尽管用户能够添加附件,但这就是它破坏的地方。当它将新附件添加到模式并显示在页面上时,它会删除attachmentsModel.convAttachments.

稍后,会发生这种情况:

阿贾克斯回归:

我希望这能给出一个清晰的过程,如果没有,请告诉我。有什么想法为什么在我使用时 knockoutjs 会杀死一切updateFromJS

0 投票
3 回答
11172 浏览

javascript - Knockout JS映射插件没有初始数据/空表单

我们正在使用敲除和敲除映射插件来促进 jQTouch Web 应用程序中的数据绑定。我们使用映射插件的原因是能够使用淘汰赛而无需在 javascript 中手动定义/更改视图模型。当您从服务器/客户端数据库初始加载数据时,映射插件非常有用。

我们遇到的问题是我们有一些屏幕/视图,它们的形式可能没有任何初始数据。如果没有这些初始数据,映射插件将无法“生成”视图模型 (ko.mapping.fromJS)。这意味着我们仍然需要为大部分视图手动定义视图模型。

假设这是映射插件(应该)支持的场景,我错了吗?我的意思是,这意味着映射插件仅在您始终具有初始数据加载的情况下可用。

0 投票
2 回答
815 浏览

knockout.js - 在具有空字符串的数组上使用 fromJS 会将这些字符串替换为 false

当下面的对象被映射时,数组中的空""值在 observable 数组中被映射为 false:

当使用此映射回 json 时ko.mapping.toJSON(viewmodel2);,结果如下:

请注意,数组中的最后 3 个字符串值被转换回 false。

这是一个错误吗?或者是不支持包含布尔值和字符串的数组

这是一个小提琴

0 投票
4 回答
14871 浏览

javascript - 我是否总是使用 Knockout 映射插件来执行我的视图模型,从而过度使用它?

ko.observable我仍在学习 Knockout 的正确用法,我发现自己在设置我的视图模型时很快就摆脱了打字,而只是定义一个对象文字并将其通过映射插件传递给类似的东西

或者至少,类似于将我的所有数据填充到 viewModel 上的一个属性中,就像这样

老实说,我这样做的主要原因是为了避免不得不ko.observable重复ko.observableArray打字。我只是想弄清楚这是否是一种好方法,以及将特定var x = ko.observable()声明全部删除是否有任何缺点。此外,我在加载时执行此操作,而不是响应任何 ajax 调用等,据我所知,这就是映射插件的设计目的。

在您的淘汰赛工作中,您是否仍然手动、一一声明可观察对象,或者您是否使用了我使用的 mapping.fromJS 方法?像这样频繁使用映射插件有什么具体的缺点吗?

编辑:

具体例子

在本文中,Steve 通过以下方式设置了他的 viewModel

通常,我也会ko.mapping.fromJS用于这种情况,特别是要确保数组中的对象也被转换为可观察对象。看看他做了什么,我的方法似乎有点矫枉过正,并增加了一些不必要的开销。

0 投票
4 回答
13851 浏览

mvvm - 使用敲除映射插件将深度层次化的对象映射到自定义类

使用敲除映射插件 ( http://knockoutjs.com/documentation/plugins-mapping.html ) 你能映射一个深度层次的对象吗?

如果我有一个具有多个级别的对象:

如何将其映射到 javascript 中的自定义类:

映射插件可以递归地将这些数据映射到我的自定义对象的层次结构中吗?

0 投票
1 回答
1074 浏览

knockout.js - Knockout.js 和映射插件没有深度翻译

我使用 json 对象来处理我的菜单和面包屑。现在,您可以在下面看到前两个“导航”节点是可观察的,但最后一个不是。由于某种原因,它只是一个常规数组。映射插件不会深度克隆对象吗?

萤火虫输出:

初始化:

json.Layout JSON:

更新:

仔细看,因为“导航”只有一个节点,所以它使它成为一个对象,而不是像其他对象那样的数组。我该如何补救?在映射插件中使用创建?

0 投票
1 回答
1964 浏览

knockout.js - 带有 Knockout.js 和 ko.mapping 的单维数组模板

我有一个使用 ko.mapping 插件映射的 JSON 字符串,我需要为其中一个映射数组创建可观察的绑定。该数组在 JSON 中为 [1,2,3,4,5],因此它没有索引。

我有以下代码工作到一定程度:

所以一切都按预期工作,除了<input data-bind="value: this.data" />该字段保持空白......${this.data}但是显示正确的值。

总的来说,我想更新一个 JSON 字符串并将其重新保存在一个平面文件中。我可以将数据数组:[1,2,3,4]直接绑定到输入值,但它不会作为数组更新。

这是视图模型: var viewModel = {};

这是JSON:

[ { "type":"spline", "marker":{ "symbol":"diamond" }, "name":"Cumulative", "data":[10,17,18,18,16,17,18,19] }, { "type":"spline", "marker":{ "symbol":"circle" }, "name":"Monthly", "data":[10,22,20,19,8,20,25,23] } ]

任何帮助将不胜感激。如果我从错误的角度处理这个问题,也可以接受建议。最终只是希望能够通过 UI 修改 JSON 字符串,然后将其保存。

提前致谢。

0 投票
2 回答
4374 浏览

knockout.js - 向使用 knockout.mapping 插件和 knockoutjs 创建的嵌套可观察数组添加新值

如此接近让它按预期工作。我从 JSON 请求中获取数据,然后使用映射插件对其进行映射。我想在单击绑定上向嵌套数组中添加新值。

现在在我的代码中,我收到一个错误,即未定义 addPoint。

看法:

查看模型

JSON:

[{"type":"spline","marker":{"symbol":"diamond"},"name":"Cumulative","data":[10,17,18,18,16,17,18,19]},{"type":"spline","marker":{"symbol":"circle"},"name":"Monthly","data":[10,22,20,19,8,20,25,23]}]

我能够从较早的响应中调整此 jsfiddle 以将点添加到单个数组。我需要找到一种方法在生成的映射中实现这一点。

http://jsfiddle.net/vv2Wx/1/

0 投票
1 回答
4395 浏览

knockout.js - KnockoutJS - 使用 ko.mapping 插件的特定字段的强制编号

当我使用ko.mapping.toJSON它时,它会将我所做的任何更改转换为字符串,并且它们需要是数字。我尝试像这样使用自定义映射:

...但这只会将它们作为数字保留在页面的范围内。由于我使用它来更新由 HighCharts.js 提取的外部 JSON,因此即使在 toJSON 之后,数字也需要保持数字。

从较早的答案here我可以使用:

......游泳效果很好。然而,这只是 JSON 中的单一值类型,所以我不清楚如何使用相同的覆盖。在这种情况下,我是否也需要创建一个全新的对象来执行此操作。还是他们的东西更简洁?

0 投票
1 回答
324 浏览

javascript - KnockoutJs 1.3 测试版。_destroy:false 在 ui 上的结果与 _destroy:true 相同

使用 asp.net mvc,我将一个视图模型向下传递并敲除以映射一个视图模型并绑定到它。

这对我来说一切正常,我想做的是跟踪删除。

我想我可以通过添加 _destroy 属性但将其设置为 false 来做到这一点。

我希望用户界面会忽略这一点,直到将其设置为真。

但情况似乎并非如此,仅此属性的存在就导致被视为已损坏。

这是一个错误还是我处理错了?

非常感谢,科汉

以上元素都不会显示。甚至 "_destroy": null 也有同样的效果。

问题的工作示例...

http://jsfiddle.net/jy53e/6/

更新:似乎是映射扩展的问题。