Tag: knockout.js

Knockout.js无容器“foreach”不与<table>一起使用

此代码引发错误(在Chrome中):“无法find结束评论标签以匹配:ko foreach:MyPlans”: <table> <!– ko foreach: MyPlans –> <tr> <td>Test</td> </tr> <!– /ko –> </table> 如果我使用一个列表,则一切正常: <ul> <!– ko foreach: MyPlans –> <li> Test </li> <!– /ko –> </ul> 我想用一张桌子来使用无容器的foreach。 有什么我做错了吗? 这是一个错误?

knockoutjs数据绑定与jquery-ui datepicker

我正在使用jQuery UIdateselect器。 它后面的HTMLinput字段目前作为dependentObservable连接到KnockoutJS ,但是如果在viewmodel中设置了它的值,则datepicker会丢失其格式。 我应该怎么做,而不是丢失的格式? 我想viewModel不知道它是一个jQuerydateselect器。

用于多视图应用的knockoutjs模式的示例

我正在构build一个包含两个复杂的,显着不同(但有一些共享组件)视图的应用程序。 一个视图允许用户运行查询并查看search结果,而另一个视图则概述最近的活动。 一个相关的例子可能是一个具有电子邮件屏幕和联系人屏幕的PIM应用程序。 这两套行动是完全不同的,但在那之间也有结构上的相似之处。 在构build我的应用程序时,我已经开始使用search结果视图。 我现在需要创build第二个,并且想知道组织代码的最佳实践。 我是否为每个应用程序“视图”创build一个单独的对象(我猜是子视图模型),并用if / ifnot绑定在它们之间切换? 视图之间的一个共同点是每个对象都有一个可滚动的,可过滤的,可分页的对象列表。 我应该尝试列出列表之间的差异,以便我可以有一个共同的sorting/filter用户界面,或者我只是创build两个并行接口,只有共享我的自定义绑定? 谢谢, 基因

KnockOutJS – 在一个视图中的多个ViewModels

我在想,我的应用程序现在变得相当大,太大,无法处理每个视图与一个ViewModel。 所以我想知道创build多个ViewModels并将它们全部加载到一个View是多么困难。 注意,我还需要能够将X ViewModel数据传递到Y ViewModel数据,因此各个ViewModel需要能够相互通信或者至less知道对方。 例如,我有一个<select>下拉菜单,select下拉菜单有一个select状态,允许我将<select>所选项目的ID传递给另一个Ajax调用,在一个单独的ViewModel中。 在单个视图中处理大量ViewModel的任何观点都将得到赞赏:)

获取“JSON请求太大,无法反序列化”

我得到这个错误: JSON请求太大,无法反序列化。 这是发生这种情况的场景。 我有一个国家类别的国家的航运港口名单 public class Country { public int Id { get; set; } public string Name { get; set; } public List<Port> Ports { get; set; } } 我在客户端使用KnockoutJS进行级联下拉。 所以我们有两个下拉列表,第一个是国家,第二个是国家的港口。 到目前为止,一切正常,这是我的客户端脚本: var k1 = k1 || {}; $(document).ready(function () { k1.MarketInfoItem = function (removeable) { var self = this; self.CountryOfLoadingId = ko.observable(); self.PortOfLoadingId […]

Knockout.js在半大型数据集下非常慢

我刚刚开始使用Knockout.js(总是想尝试一下,但是现在我终于有了一个借口!) – 然而,当将表绑定到相对较小的一组表时,我遇到了一些非常糟糕的性能问题数据(大约400行左右)。 在我的模型中,我有以下代码: this.projects = ko.observableArray( [] ); //Bind to empty array at startup this.loadData = function (data) //Called when AJAX method returns { for(var i = 0; i < data.length; i++) { this.projects.push(new ResultRow(data[i])); //<– Bottleneck! } }; 问题是上面的for循环需要约30秒左右,约400行。 但是,如果我将代码更改为: this.loadData = function (data) { var testArray = []; //<– Plain ol' Javascript […]

Observable的设置值在Knockout中不更新

(每天都有很多问题需要回答,为什么我不能设置可观察值的值,而不是有太多不同的答案,说同样的事情,我想创build一个问题以供大家参考) Knockout Observable / Observable Array的设置值不会更新 设置我可观察的observableArray的值不更新! 将项目添加到Observable数组 为什么我不能将一个项目添加到我的Knockout可观察数组中?

从JSON对象中parsing循环引用

如果我有一个来自json.net的序列化JSON,如下所示: User:{id:1,{Foo{id:1,prop:1}}, FooList{$ref: "1",Foo{id:2,prop:13}} 我想淘汰赛输出一个foreach over FooList,但我不知道如何继续,因为$ ref的东西可以扔东西。 我想这个解决scheme会强制所有Foos在FooList中渲染,而不使用: PreserveReferencesHandling = PreserveReferencesHandling.Objects 但这似乎是浪费..

可以用cleanNode()来清理绑定吗?

用下面的代码,input#p_in将随着input#s_in的改变而更新。 但是我已经使用了cleanNode(sec)。 任何人都可以帮助理解为什么绑定不清除。 <input id="p_in" data-bind="value: name"></input> <input id="s_in" data-bind="value: name"></input> <input id="cb" type="checkbox">same</input> <script type="text/javascript"> function AddrDataSet (name) { this.name = ko.observable(name); }; var primary_set = new AddrDataSet('p'); var sec_set = new AddrDataSet('s'); var pri = $('#p_in')[0]; var sec = $('#s_in')[0]; ko.applyBindings(primary_set, pri); ko.applyBindings(sec_set, sec); ko.cleanNode(sec); // clean it ko.applyBindings(primary_set, sec); // bind it […]

如何创build一个自动完成的combobox?

有没有人知道用Knockout JS模板创build自动完成combobox的最佳方法? 我有以下模板: <script type="text/html" id="row-template"> <tr> … <td> <select class="list" data-bind="options: SomeViewModelArray, value: SelectedItem"> </select> </td> … <tr> </script> 有时候这个列表很长,我希望Knockout能够很好的与jQuery自动完成或者一些直接的JavaScript代码一起玩,但是没有成功。 另外,jQuery.Autocomplete需要一个input字段。 有任何想法吗?