草庐IT

Knockout

全部标签

javascript - 在 knockout.js 中有条件地添加一个元素属性

knockout.js库有一个"attr"databinding它允许您动态更改HTML元素属性的值(例如“标题”)。但是,在某些情况下,可能需要也可能不需要该属性,具体取决于绑定(bind)对象上相应的可观察对象。例如,如果我的模型有一个“title”可观察对象,我可能想要设置“title”属性(如果它存在(非空))或完全跳过该属性(如果它不存在(空))。knockout是否提供任何方式来有条件地设置属性?(理想情况下无需有条件地呈现整个元素开始标记...)[注意]这个同名问题实际上是由knockout对CSS类的特殊处理解决的,与这个问题(或它自己的标题)无关:Howtocondi

javascript - 检测对 Knockout View 模型的更改

当然,这是一个很容易回答的问题,但是有没有一种简单的方法可以确定是否有任何knockoutView模型的属性发生了变化? 最佳答案 使用扩展器:ko.extenders.trackChange=function(target,track){if(track){target.isDirty=ko.observable(false);target.originalValue=target();target.setOriginalValue=function(startingValue){target.originalValue=star

javascript - 如何使用 Knockout.js 在特定位置向 ObservableArray 添加/插入项目

我发现的所有knockout示例似乎都使用类似以下内容将新项目添加到ObservableArray的末尾:viewModel.SomeItems.push(someNewItem);这当然会将项目放在数组的末尾。如何在ObservableArray的某个位置添加一个项目?例如。像这样的东西:viewModel.SomeItems.push(someNewItem,indexToInsertItAt); 最佳答案 你应该可以使用原生JavaScriptsplice方法-viewModel.SomeItems.splice(2,0,so

javascript - knockout.js - 从 DOM 元素获取 ViewModel

是否有可能从给定的DOM元素中获取绑定(bind)的ViewModelJavaScript对象?ko.applyBindings(gLoginViewModel,document.getElementById("login-form"));ko.applyBindings(gLoginViewModel,document.getElementById("register-form"));在其他地方-在相当不相关的代码中-像这样:varviewModel=ko.getViewModel(formElement);viewModel.someObservable(someData);//o

javascript - 在构建 knockout js 绑定(bind)时隐藏屏幕的最佳方法是什么?

我是knockoutjs的忠实粉丝。我现在将它用于我所有的Web开发并且非常喜欢它。不过,我一直无法弄清楚的一件事是如何在构建knockoutjs绑定(bind)时隐藏UI。例如,我有一个非常强大的用户界面,在我的页面上使用了很多模板。我注意到的问题是,当用户第一次访问该页面时,他们会在绑定(bind)启动并隐藏它们之前的一瞬间看到我的所有模板。解决此问题的最佳方法是什么?我试过使用辅助类来隐藏它们,但是模板无法使用“可见”和“如果”绑定(bind)显示,除非我删除辅助类引用(即ui-helper-hidden)。 最佳答案 刚go

javascript - 将 true/false 绑定(bind)到 Knockout JS 中的单选按钮

在我的View模型中,我有一个值为true或false的IsMale值。在我的UI中,我希望将其绑定(bind)到以下单选按钮:MaleFemale我认为checked的问题需要字符串“true”/“false”。所以我的问题是,如何使用此UI和模型获得此双向绑定(bind)? 最佳答案 我知道这是一个旧线程,但我遇到了同样的问题并找到了一个更好的解决方案,该解决方案可能是在正式回答这个问题后添加到knockout中的,所以我将把它留给有相同问题的人问题。目前不需要扩展器、自定义绑定(bind)处理程序或计算。只需提供一个“chec

javascript - knockout.js 中 $parent 的访问索引

在knockout.js2.1.0中,在使用foreach绑定(bind)的模板中,您可以通过$index()函数访问当前项目的索引。在嵌套的foreach绑定(bind)中,是否有任何方法可以从模板访问$parent的索引?假设我有这样的数据结构:varapplication={topModel:[{{subModel:[{'foo':'foo'},{'bar':'bar'}]},//thishastop:0andsub:0{subModel:[{'foo2':'foo2'},{'bar2':'bar2'}]}//thishastop:0andsub:1},{{subModel:[{

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

我刚刚开始使用Knockout.js(一直想尝试一下,但现在我终于有了借口!)-但是,在将表绑定(bind)到相对小数据集(大约400行左右)。在我的模型中,我有以下代码:this.projects=ko.observableArray([]);//Bindtoemptyarrayatstartupthis.loadData=function(data)//CalledwhenAJAXmethodreturns{for(vari=0;i问题是上面的for循环大约需要30秒左右,大约有400行。但是,如果我将代码更改为:this.loadData=function(data){varte

javascript - 如何让 Knockout JS 在按键上进行数据绑定(bind)而不是失去焦点?

knockoutjs这个例子因此,当您编辑字段并按TAB时,View模型数据以及字段下方的文本都会更新。如何更改此代码,以便每次按键都更新View模型数据?knockoutjswindow.onload=function(){varviewModel={firstName:ko.observable("Jim"),lastName:ko.observable("Smith")};viewModel.fullName=ko.dependentObservable(function(){returnviewModel.firstName()+""+viewModel.lastName();

javascript - 声明为对象文字与函数的 knockout View 模型之间的区别

在knockoutjs中,我看到ViewModels声明为:varviewModel={firstname:ko.observable("Bob")};ko.applyBindings(viewModel);或:varviewModel=function(){this.firstname=ko.observable("Bob");};ko.applyBindings(newviewModel());如果有的话,两者有什么区别?我确实找到了thisdiscussion在knockoutjsgooglegroup上,但它并没有真正给我一个满意的答案。如果我想用一些数据初始化模型,我可以看到