Tag: knockout.js

在保持视图模型同步的同时取消选择单选按钮

我有一个广播组,允许用户(使用jQuery事件)取消选择以前的选择。 我正在尝试添加KnockoutJS来跟踪更改,但是viewmodal与UI不同步。 任何人都可以建议我如何让两者同步? 我的观看代码: Linked Value: 相应的JS: $(‘#test input[type=”radio”]’).click(function (event) { var checked = $(this).hasClass(‘checked’); if (checked) { $(this).removeAttr(‘checked’); $(this).removeClass(‘checked’); } else { $(this).addClass(‘checked’); } }); var viewModel = { asd: ko.observable(“a”) }; ko.applyBindings(viewModel); 这个小提琴可以在网上看到一个例子。

删除克隆元素上的knockout js绑定

我正在使用knockout js模板绑定function将一组项目呈现给一个元素: ko.applyBindings(new function () { this.childItems = [{ Text: “Test”, ImageUrl: “Images/Image.png” }]; }); 单击时,将克隆子项并将其放入另一个元素中: $(“.childSelector”).on(“click”, “.childItem”, function () { var clone = $(this).clone()[0]; ko.cleanNode(clone); $(“.targetNode”).append(clone); }); 问题是当源数据更改并且模板重新绑定到新数据时,会引发以下错误: 未捕获错误:无法解析绑定。 消息:ReferenceError:未定义文本; 绑定值:attr:{title:Text} 我找到了另一个post,建议使用ko.cleanNode(element)删除knockout的绑定,但是这并没有解决我的问题。 有没有办法在克隆元素上删除knockout的绑定以防止重新绑定时出现此错误? 如果不是,我只是通过从被点击的元素中提取所需的数据来“手动”克隆元素。 这是我正在做的一个简单的例子

Knockout.js:无法解析JSON的绑定

我有一个通过AJAX获取JSON的视图模型,并创建一个新的Task,但Knockout继续给我一个绑定错误。 如果我在视图模型中直接硬编码来自服务器的数据,我不会收到任何错误。 我的视图模型创建了一个新任务,它有一个id,一个问题和一些替换,它本身有一个文本和正确的布尔标志。 以下代码完美无缺: function Task(data) { var self = this; self.id = data.id; self.question = ko.observable(data.question); var alts = new Array(); $(data.alternatives).each(function(index){ alts.push(new Alternative(data.alternatives[index].alternative, data.alternatives[index].correct)); }); self.alternatives = ko.observableArray(alts); } function Alternative(alternativeText, correctAnswer) { var self = this; self.alternative = ko.observable(alternativeText); self.correct = ko.observable(correctAnswer); } function TaskViewModel() { var self = this; var data […]

在jQuery中调用knockout viewmodel函数

如何在jQuery函数中调用viewmodel函数? 我只想从Javascript函数调用viewmodel函数的函数。 function ContactsViewModel(data) { var self = this; // Editable data self.Contacts = ko.observableArray(JSON.parse(data)); self.limit = ko.observable(20); self.changeNumber = function(item){ self.limit(self.limit()+20); self.Contacts.push(item); } self.myPostProcessingLogic = function(elements) { if ($(‘#KnockOutContacts’).children().length === ko.toJS(self.Contacts).length) { // Only now execute handler jq(); } } } 如何从jscroll窗格函数调用changeNumber ? $(‘.jspScrollable’).bind( ‘jsp-arrow-change’, function(event, isAtTop, isAtBottom, isAtLeft, isAtRight) { // Now look […]

Jquery Knockout:ko.computed()vs经典函数?

我有一个视图模型 function ViewModel() { this.applications = ko.observable(10); this.applicationsText_computed = ko.computed(function () { return “You have ” + this.applications() + ” applications”; }); this.applicationsText_classinc = function () { return “You have ” + this.applications() + ” applications”; }; }; var viewModel = new ViewModel(); ko.applyBindings(viewModel); 当我更改applications可观察时,两个段落都会更改文本。 那么,使用ko.computed和classinc函数有什么区别?

Knockout嵌套可排序列表

我需要构建一个包含两个可以交换的列表的网页。 列表中的项目也可以从一个列表交换或移动到另一个列表。 我使用knockoutjs和knockoutjs-sortable来实现这一点。 HTML JS var Task = function (name) { this.name = ko.observable(name); } var ViewModel = function () { var self = this; self.tasks1 = ko.observableArray([]); self.tasks2 = ko.observableArray([]); for (var i = 0; i < 5; i++) { self.tasks1.push(new Task("This task belongs to list one")); self.tasks2.push(new Task("This task belongs to list two")); […]

表单数据未在asp.net核心mvc控制器模型中序列化

C#模型类 public class SubCategoryTwoViewModel { public long Id { get; set; } public string SubCatTwoName { get; set; } public CategoryViewModel Category { get; set; } public SubCategoryOneViewModel SubCatOne { get; set; } public string PictureUrl { get; set; } public List File { get; set; } public UserViewModel AddedBy { get; set; } public […]

Knockout Kendo下拉列表获取所选项目的文本

我的应用程序是MVC 5.我使用以下Knockout Kendo下拉列表: Selected: var ViewModel = function () { var self = this; this.foodgroups = ko.observableArray([ { id: “1”, name: “apple” }, { id: “2”, name: “orange” }, { id: “3”, name: “banana” } ]); var foodgroup = { name: self.name, id: self.id }; this.foodgroup = ko.observable(); ko.bindingHandlers.kendoDropDownList.options.optionLabel = ” – Select -“; this.foodgroup.subscribe(function […]

当jQuery Datepicker打开时,Knockout更改会破坏Datepicker

我已经设置了一个jsFiddle来演示我的问题。 我在做什么 : 我正在使用Knockout和jQuery Datepicker ,如本问题所示。 我的模型包含一个observableArray ,它包含具有日期属性的对象。 Knockout为每个对象呈现 ,并使用RP Niemeyer的datepicker绑定将值绑定到日期。 出了什么问题: 如果用户在挖空模型更改时打开了一个日期选择器(例如,添加新项目),则datepicker将停止正常工作。 据我所知,在datepicker打开时创建的最后一个成为新的datepicker目标。 我需要修复绑定,以便不会发生这种情况 。 示例HTML : 示例Javascript : ko.bindingHandlers.datepicker = { init: function(element, valueAccessor, allBindingsAccessor) { //initialize datepicker with some optional options var options = allBindingsAccessor().datepickerOptions || {}; $(element).datepicker(options); //handle the field changing ko.utils.registerEventHandler(element, “change”, function() { var observable = valueAccessor(); observable($(element).datepicker(“getDate”)); }); […]

如何检查单击处理程序上的“shift”键盘修饰符?

当使用jQuery click事件时,我会检查传递给click处理程序的事件对象,以确定用户在单击时是否持有shift键。 在KnockoutJS中使用点击装订时,是否可以检查键盘修改器,如shift键? 如果是这样,怎么样?