问题标签 [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.
jquery - 使用嵌套剔除模板显示嵌套数据
我正在尝试使用淘汰赛制作一张带有可折叠行的表格。每个“父”行都存在于我的数据结构的顶层,每个“子”行都是成员数组的一个元素。
当我从服务器更新数据时,问题就来了。数据更新,但我可以说它正在替换我的 DOM 对象,因为“父”行中的复选框被清除。我有一个演示这个问题的小提琴,使用计时器来更新数据:
http://jsfiddle.net/jdlogicman/m2LWk/
我已经读过使用嵌套的 foreach 而不是{{each}}
应该修复它,但我无法让它工作 - 请参阅上面小提琴中的注释部分。
如果任何现有问题解决了这个问题,我不知道如何解决。任何帮助表示赞赏
javascript - 我的对象有什么问题(关于 knockoutjs 映射插件)
我用这个把头发拉出来。我不确定发生了什么。我已经阅读了所有关于映射的教程,但我显然遗漏了一些东西。
我试过了
和
在我的旧代码中,我最终这样做了。
但我的 JSON 看起来不一样。它没有嵌套对象,并且它的开头和结尾也有括号,使其成为一个数组。看起来这将是非常基本的。我根本没有收到任何错误。谢谢您的帮助。
编辑
javascript - 使用 KnockoutJs 跟踪初始映射的最佳方法
我发现在我的应用程序中,我重复了很多以下模式(见下面的代码)。我必须调用 BindMyEvents(true) 进行第一次加载,然后调用 BindMyEvents(false) 进行后续数据检索。
它是延迟加载的,所以我不希望将数据序列化到 HTML 源中。有没有比将布尔标志传递到我的 Bind() 方法更好的方法?是否有通过淘汰赛实现这一目标的标准模式?
我在想我是否应该在视图模型定义中设置 viewAlertsModel.alerts = null,然后让 Bind 函数检查这一点。如果设置为 null 则调用映射方法,然后调用 applyBindings()?
knockout.js - KnockoutJS:ko.ToJSON(this) 不起作用?
以下 java 脚本定义了具有属性“ text ”和函数“ save ”的 MyViewModel 对象。
并定义了以下按钮:
单击按钮时的结果:
- 使用 this.text() 访问属性可以正常工作
- 将 java-script 对象转换为 JSON 对象:ko.ToJSON(this) 不起作用并引发错误:“错误:对象不支持此属性或方法”
可能是一些微不足道的东西丢失或错误,但我看不到它。有小费吗 ?
javascript - 淘汰赛的数据加载模式
我试图了解 KnockoutJS 是否适用于我的应用程序。我的数据模型(简化)如下:
对于给定的topic
,我有一个或多个query
实例。每个查询都包含一个posting
实例列表。每个都posting
指一个文件。只要实例属于不同的实例,posting
就可以引用多个给定的实例。document
posting
query
如果 aposting
指的是新文档(尚未被 any 检索到query
),我想创建一个新实例;如果document
已经存在(ID 是唯一的),我想重新使用它。
我可以看到一些可能的替代方案来构建服务器返回的 JSON 数据:
- 序列化过帐时,首先序列化所有文档的列表,并使用它们更新主文档列表。然后,发送包含对文档 ID 的引用的帖子。
- 将每个文档完全序列化为帖子的属性,然后确定该条目是否多余。将非冗余条目添加到主列表。
序列化数据的合理模式是什么?是否有一些映射插件的魔法可以简洁地表达这一点?我可以控制生成 JSON 的服务器,并且可以以任何有意义的方式构建它。
谢谢,
基因
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 中工作 - 但我会继续使用它并在我得到它工作时更新此链接)。
感谢您的帮助
knockout.js - 在 KnockoutJS 中使用自定义绑定更改绑定值
我有一个自定义绑定,用于截断可观察数组中的描述。我只是想知道更改返回绑定的文本的最佳方法。
页面上的其他地方使用了广泛的描述。此截断版本用于侧边栏中。愿意接受有关解决此问题的更好方法的建议,但这对我来说似乎是最好的方法。
viewModel 是通过映射插件从 JSON 文件生成的,或者我直接在 viewmodel 中添加一个截断的版本。
谢谢你看东西。
knockout.js - 从 observableArray 仅获取修改行的最佳方法(当有批量编辑选项时)
我有一个ObservableArray
集合,它使用批量编辑选项(MVC3)绑定到 HTML 表,每次用户点击提交时,我只想发送集合中修改后的行,而不是发送整个视图模型列表,请告知是否有最佳跟踪方法或仅过滤修改的行。
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 的方式?
asp.net-mvc-3 - 使用 Knockout.js 从列表中删除项目
我正在尝试从列表中删除一个项目。我正在使用带有映射插件的 knockout.js。我的代码如下所示:
序列化为 Json
模板
KO JavaScript
的HTML
问题
一切都按预期工作。但是,当您单击按钮项时,会显示带有删除按钮的图像列表。文件名未定义。想法?
编辑:取自 KNockout.js 手册:“调用处理程序时,Knockout 将提供当前模型值作为第一个参数。如果您为集合中的每个项目呈现一些 UI,这将特别有用,并且您需要知道点击了哪个项目的 UI。”
看来我没有得到我期待的 Img 对象。我不知道我得到了什么!