问题标签 [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 投票
1 回答
1627 浏览

jquery - 使用嵌套剔除模板显示嵌套数据

我正在尝试使用淘汰赛制作一张带有可折叠行的表格。每个“父”行都存在于我的数据结构的顶层,每个“子”行都是成员数组的一个元素。

当我从服务器更新数据时,问题就来了。数据更新,但我可以说它正在替换我的 DOM 对象,因为“父”行中的复选框被清除。我有一个演示这个问题的小提琴,使用计时器来更新数据:

http://jsfiddle.net/jdlogicman/m2LWk/

我已经读过使用嵌套的 foreach 而不是{{each}} 应该修复它,但我无法让它工作 - 请参阅上面小提琴中的注释部分。

如果任何现有问题解决了这个问题,我不知道如何解决。任何帮助表示赞赏

0 投票
1 回答
554 浏览

javascript - 我的对象有什么问题(关于 knockoutjs 映射插件)

我用这个把头发拉出来。我不确定发生了什么。我已经阅读了所有关于映射的教程,但我显然遗漏了一些东西。

我试过了

在我的旧代码中,我最终这样做了。

但我的 JSON 看起来不一样。它没有嵌套对象,并且它的开头和结尾也有括号,使其成为一个数组。看起来这将是非常基本的。我根本没有收到任何错误。谢谢您的帮助。

编辑

http://jsfiddle.net/gjemN/

0 投票
1 回答
1036 浏览

javascript - 使用 KnockoutJs 跟踪初始映射的最佳方法

我发现在我的应用程序中,我重复了很多以下模式(见下面的代码)。我必须调用 BindMyEvents(true) 进行第一次加载,然后调用 BindMyEvents(false) 进行后续数据检索。

它是延迟加载的,所以我不希望将数据序列化到 HTML 源中。有没有比将布尔标志传递到我的 Bind() 方法更好的方法?是否有通过淘汰赛实现这一目标的标准模式?

我在想我是否应该在视图模型定义中设置 viewAlertsModel.alerts = null,然后让 Bind 函数检查这一点。如果设置为 null 则调用映射方法,然后调用 applyBindings()?

0 投票
2 回答
11319 浏览

knockout.js - KnockoutJS:ko.ToJSON(this) 不起作用?

以下 java 脚本定义了具有属性“ text ”和函数“ save ”的 MyViewModel 对象。


并定义了以下按钮:


单击按钮时的结果:

  • 使用 this.text() 访问属性可以正常工作
  • 将 java-script 对象转换为 JSON 对象:ko.ToJSON(this) 不起作用并引发错误:“错误:对象不支持此属性或方法”

可能是一些微不足道的东西丢失或错误,但我看不到它。有小费吗 ?

0 投票
2 回答
409 浏览

javascript - 淘汰赛的数据加载模式

我试图了解 KnockoutJS 是否适用于我的应用程序。我的数据模型(简化)如下:

对于给定的topic,我有一个或多个query实例。每个查询都包含一个posting实例列表。每个都posting指一个文件。只要实例属于不同的实例,posting就可以引用多个给定的实例。documentpostingquery

如果 aposting指的是新文档(尚未被 any 检索到query),我想创建一个新实例;如果document已经存在(ID 是唯一的),我想重新使用它。

我可以看到一些可能的替代方案来构建服务器返回的 JSON 数据:

  1. 序列化过帐时,首先序列化所有文档的列表,并使用它们更新主文档列表。然后,发送包含对文档 ID 的引用的帖子。
  2. 将每个文档完全序列化为帖子的属性,然后确定该条目是否多余。将非冗余条目添加到主列表。

序列化数据的合理模式是什么?是否有一些映射插件的魔法可以简洁地表达这一点?我可以控制生成 JSON 的服务器,并且可以以任何有意义的方式构建它。

谢谢,

基因

0 投票
3 回答
11482 浏览

knockout.js - KnockoutJS:将 Observable 属性和函数添加到映射生成的 ObservableArray 中的对象

我是KnockoutJS的新手,我一直在尝试向插件ko.observableArray()创建的生成对象中添加其他属性和方法mapping


这就是我要做的事情:

  • 我有一个 JSON 数组Users
  • ko.observableArray()用映射插件创建了
  • 我有一个为每个创建表格行的模板,User到目前为止一切都很好:o)


这是我正在尝试做的事情:

每个User都有一个名为的属性'IsActive'-我想为每个对象data-bind上的一个方法单击事件来切换此属性。User'IsActive'

这个问题看起来很有希望,但对我来说,必须在 JS 中声明整个视图模型似乎是不必要的重复(除非我必须这样做!) - 是否可以扩展生成的对象?

我更多地沿着这些思路思考,有一种方法可以声明额外的属性或方法,并让它们扩展mapping生成的对象,但本文关注的是单个对象,而不是扩展生成的数组中的对象。


这是代码: http: //jsfiddle.net/yZkSf/2/ (尚未在 JS fiddle 中工作 - 但我会继续使用它并在我得到它工作时更新此链接)。

感谢您的帮助

0 投票
2 回答
2035 浏览

knockout.js - 在 KnockoutJS 中使用自定义绑定更改绑定值

我有一个自定义绑定,用于截断可观察数组中的描述。我只是想知道更改返回绑定的文本的最佳方法。

页面上的其他地方使用了广泛的描述。此截断版本用于侧边栏中。愿意接受有关解决此问题的更好方法的建议,但这对我来说似乎是最好的方法。

viewModel 是通过映射插件从 JSON 文件生成的,或者我直接在 viewmodel 中添加一个截断的版本。

谢谢你看东西。

0 投票
2 回答
5208 浏览

knockout.js - 从 observableArray 仅获取修改行的最佳方法(当有批量编辑选项时)

我有一个ObservableArray集合,它使用批量编辑选项(MVC3)绑定到 HTML 表,每次用户点击提交时,我只想发送集合中修改后的行,而不是发送整个视图模型列表,请告知是否有最佳跟踪方法或仅过滤修改的行。

0 投票
2 回答
330 浏览

c# - 如何更改 asp.net mvc 格式化 JSON 的方式?

我有这个模型

和 asp.net MVCreturn Json(...)给了我这个:

当我尝试返回以下类型时:List<Person>

但我想要这样的东西(如果可能的话):

我的问题:

  • 如何让 C# (asp.net mvc) 以更好的格式返回 JSON,例如:(注意:忽略数据,我的主要观点是它以“People”作为主要集合返回.. 我应该怎么做这个?JSON.net?)

    {"人物":[{"姓名":"JC","年龄":24,"颜色":[{"ColorId":1,"Name":"Red"},{"ColorId":2,"姓名":"蓝色"}]}, {"姓名":"阿尔伯特","年龄":83,"颜色":[{"ColorId":2,"姓名":"蓝色"}]}]}

  • 或者我怎样才能让KNOCKOUT.JS MAPPING PLUGIN使用这种类型的 JSON 格式?(对于那些知道淘汰赛的人)

    [{"Name":"JC","Age":24,"Colors":[{"ColorId":1,"Name":"Red"},{"ColorId":2,"Name":"Blue "}]}, {"Name":"Albert","Age":29,"Colors":[{"ColorId":2,"Name":"Blue"}]}]


更新(额外说明/信息):

这是我的数据,我想返回一个列表

采用与此类似的 JSON 格式:

我只是想知道这是否可能,或者如果没有,那么我怎样才能使knockout.js 映射插件适应 MVC 的返回 json 的方式?

0 投票
2 回答
8625 浏览

asp.net-mvc-3 - 使用 Knockout.js 从列表中删除项目

我正在尝试从列表中删除一个项目。我正在使用带有映射插件的 knockout.js。我的代码如下所示:

序列化为 Json

模板

KO JavaScript

的HTML

问题

一切都按预期工作。但是,当您单击按钮项时,会显示带有删除按钮的图像列表。文件名未定义。想法?

编辑:取自 KNockout.js 手册:“调用处理程序时,Knockout 将提供当前模型值作为第一个参数。如果您为集合中的每个项目呈现一些 UI,这将特别有用,并且您需要知道点击了哪个项目的 UI。”

看来我没有得到我期待的 Img 对象。我不知道我得到了什么!