Tag: knockout mapping plugin

嵌套json的Knockout映射

我试图创建一个json架构查看器和编辑器。 我需要将动态生成的嵌套json显示为嵌套表,并且必须能够编辑它们或添加新的。 因为我试图将嵌套的json映射到knockout observable并将它们显示为嵌套表 JSBin示例 但我没有映射它可以帮助我正确映射它并帮助我安排子表作为下一个’tr’。 我没有收到任何错误,但没有显示值。

knockout.js将表单保存到json

我使用knockout.js和映射插件映射我的表单。 我准备将表单保存到json并将其发送回服务器。 这是我第一次这样做,这是最简单的方法吗? 这是我到目前为止: // Here’s my data model var viewModel; $.getJSON(‘/myJSONdata’, function (data) { viewModel = ko.mapping.fromJS(data); ko.applyBindings(viewModel); }); //convert mapped data to json format var jsonData = ko.mapping.toJSON(viewModel); // Do something to send the form data in json format back to the server on form submit Do you agree? Yes No Submit

使用Knockoutvalidation插件时,Knockout ViewModel isValid错误

我是新手使用淘汰赛,我正在尝试使用淘汰validation插件和映射插件。 我在视图模型对象上遇到了isValid函数的问题。 根据文档,isValid应该返回一个bool来确定视图模型上的任何可观察对象是否有效但是当我调用它时我得到一个错误,说isValid不是一个函数。 但是,如果我在observables上调用isValid它可以正常工作。 问题是我正在使用映射插件和我从服务器获得的一些动态数据对象,所以我不一定知道我需要validation的observable的名称,因此单独validation它们是不可行的。 以下示例已经过简化,但在实际实现中,我不知道可观察对象的名称。 也许我刚刚错过了一些文档? 谢谢你的时间。 这确实有效 var dataItem = { FirstName: ”, LastName: ”, Age: ”, Email: ” } var viewModel = function(data) { var self = this; this.Email = ko.observable().extend({ email: true }); this.LastName = ko.observable().extend({ required: true }); this.Age = ko.observable().extend({ required: true, min: 0 }); this.saveClick = function () […]

Knockout Mapping重新渲染所有内容

我正在使用Knockout映射插件来刷新UI,每3秒从服务器检索一次JSON。 UI由一些嵌套的foreach绑定组成。 但是,即使没有任何更改,似乎所有foreach绑定中的所有内容都会被完全删除并在每次刷新时重新呈现。 var testData = { Answers: [], Inspectable: { Categories: [{ Id: 1, Name: “Test Category”, Questions: [{ Id: 1, Text: “Test Question”, Active: true, Answers: [{ Text: “Test Answer”, Id: 1 }] }] }] } }; function ViewModel() { var self = this; this.refreshUrl = $(“[data-view=edit]”).data(“url”); this.refresh = function(callback) { $.get(self.refreshUrl, function(data) […]

用敲击映射插头限制

我在使用IE8的淘汰映射插件时遇到了问题。 我们的情况是我们发送可以显示给客户的所有可能记录。 然后我们在客户端处理响应系统的所有分页和过滤。 目前,我们正在发送一个包含250条记录的列表,以便通过jQuery ajax在基于jQuery模板的网格中显示。 当我们调用ko.mapping.fromJS(而不是fromJSON函数)来映射对象时,我们从IE8得到一个“脚本耗时太长”的消息。 在FF和Chrome中不会发生,因为它们的java脚本执行得更快。 有没有直接的方法来限制映射? 这是一个长期问题,因为我们可能会有近1000条记录要发送给客户。

KnockoutJS使用Mapping Plugin订阅属性更改

反正我是否可以告诉淘汰映射插件订阅所有属性更改调用某个函数? 我意识到我可以用这种方式手动订阅属性更改事件: var viewModel = { name: ko.observable(‘foo’), } // subscribe manually here viewModel.name.subscribe(function(newValue){ // do work }) 我希望能够一般订阅,因为我的视图模型可能会有所不同,我不想硬编码属性名称。 我创建了一个执行此操作的函数,但它可能不是最好的方法。 它适用于IE7及以下版本的所有浏览器。 在这里,我将viewmodel作为参数,并尝试反映它订阅属性: function subscribeToKO(data) { $.each(data, function (property, value) { if (getType(value) == “Object”) data[property] = subscribeToKO(value); else if (getType(value) == “Array”) { $.each(value, function (index, item) { item = subscribeToKO(item); }); } else { […]

使用updateFromJS会在应该添加值时替换它们

我有这个代码: var attachmentsModel = { convAttachments: ko.mapping.fromJS([]) }; $(function() { ko.applyBindings(attachmentsModel) refreshConvAttachments(); }); function refreshConvAttachments() { $.ajax({ url: ‘/xxxxxxx/’, success: function (dataJS) { // Send KO the data ko.mapping.updateFromJS(attachmentsModel.convAttachments, dataJS); } }); } 上面的AJAX调用返回: [{ “title”: “BillGates”, “added_by”: “xxx”, “thumb”: “urlhere”, “id”: 410, “link”: “/link/410”, “added_on”: “2011-02-22T12:57:09-08:00” }, { “title”: “biz-stone”, “added_by”: “xxx”, “urlhere”, “id”: […]

ko.mapping未定义

我遵循这个例子http://jsfiddle.net/rniemeyer/badZb/ 。 我只是将确切的代码复制并粘贴到示例应用程序中,它给了我这个错误:“ko.mapping is undefined”。 有谁知道发生了什么? 我的ko.observable和dependentObservable工作得很好,只是ko.mapping不起作用。 仅供参考:knockout.js版本为2.0,Jquery为1.7.1