Tag: knockout.js

当元素被启用/禁用时触发function

这似乎是一个相对简单的事情,但我无法在任何地方找到任何关于如何做到这一点。 我有一个模式,在等待异步数据时打开一个禁用的输入。 我想知道什么时候输入启用,我可以集中输入。 这就是我想要完成的。 将其视为全局模态打开处理程序: $(‘.modal’).on(‘shown.bs.modal’, function (event) { var textInput = $(event.target).find(‘input[type=text]:visible’).first(); if (textInput.is(‘:disabled’)) { textInput.on(‘<<<<>>>>’, function(){ textInput.off(‘<<<<>>>>’); textInput.focus(); }); } else { textInput.focus(); } }); 输入启用/禁用时是否没有触发事件? 0″> 如果在异步请求中返回了用户,则会启用该function。

使用Durandal的compose时,JQuery不会找到DOM元素

我最近使用Knockout和JQuery将我公司的项目移植到Durandal。 直接问题:我需要使用两个HTML输入初始化JQuery UI的datepicker。 但是,当我这样做时,JQuery无法找到输入: 视图: User detail viewmodel – 在第一个div中选择用户时调用SelectUser()函数,然后加载第二个div和users / _UserDetail.html: users.SelectUser = function (user) { users.CurrentUser(user); /* … */ $(function () { $(“#datepickerFrom”).datetimepicker({ dateFormat: “dm yy”, timeFormat: “HH:mm:ss”, defaultDate: null }); $(“#datepickerTo”).datetimepicker({ dateFormat: “dm yy”, timeFormat: “HH:mm:ss” }); }); } _UserDetail.html的重要部分 Active from Active to 然后两个HTML输入未定义。 如果我使用compose绑定到实际用户/ _UserDetail.html内容更改div ,它可以正常工作,但随后视图很快变得一团糟 – html文件并不是很小。 如果有人能指出我正确的方向,我将不胜感激。 谢谢!

knockoutjs通过点击事件获取元素id

我正在使用knockoutjs,我目前在我的视图中有一些看起来像这样的东西: 这允许我在视图模型中获取元素ID: pressedTab = function(tab){ console.log(“Element ID: ” + tab); } 这写道: 元素ID:#myTab1 但是,在click事件中发送img id的名称太重复了。 有没有办法在没有明确重写的情况下发送img id?

使用Knockout.js动态组合UI

我正在使用项目中令人敬畏的Knockout.js库,并且正在寻找一种在运行时构建UI部分的方法。 例如,我有一些由子模板组成的模板(简化,如下)。 我想将视图模型传递给它们并渲染它们,然后能够从条件表单中追加(并删除)内容。 我开始沿着ko.renderTemplate的路径走,但我似乎无法找到关于如何创建新div并将结果附加到现有div的任何好文档。 这是可能的,还是我应该尝试另一种方法?

Knockout Js – 将一个项目从json数组绑定到一个元素

我有以下视图模型,其中包含一系列元素 function ReservationsViewModel() { var self = this; self.availableMeals = [ { mealName: “Standard (sandwich)”, price: 0, id = 1 }, { mealName: “Premium (lobster)”, price: 34.95, id = 2 }, { mealName: “Ultimate (whole zebra)”, price: 290, id = 3 } ]; } 我想将此视图模型绑定到输入,但我想只绑定具有id值的Single数组元素的meal名称作为输入的data-id属性。 在这个例子中,我将绑定数组元素id = 1,文本将显示为“标准(三明治)”,但我仍然需要完整的绑定和更改跟踪(observables)和Knockout中的所有其他好东西。 如何获取data-id并在绑定代码中使用它来将适当的膳食绑定到输入? 提前致谢

将knockout.js observablearray对象传递给MVC Controller Action?

我在MVC中使用淘汰赛。 我试图将一个可观察的对象数组从敲除传递回我的MVC控制器动作以保存到数据库。 如果我通过ko.toJSON(viewModel.ArrayName)将数组从knockout传递到我的控制器操作,它在我的控制器参数中返回null。 如果我尝试通过ko.toJS(viewModel.ArrayName)将其传递给MVC,它具有正确的项目数,但由于某种原因数据为空。 如何做到这一点的任何帮助将非常感激。 谢谢! 我的JQuery数据检索方法: var dataService = {}; var viewModel; $(document).ready(function () { dataService.getAccessLevelList(); }) dataService.getAccessLevelList = function () { $.post(‘/DataService/GetAccessLevelList’, null, function (data) { viewModel = ko.mapping.fromJS(data); ko.applyBindings(viewModel); }); } 这是问题方法: updateAccessLevels = function () { $.post(‘/DataService/UpdateAccessLevels’, { accessLevels: ko.toJSON(viewModel.AccessLevels) }, function (status) { alert(status); }); } 我的MVC控制器数据检索操作: [HttpPost] public ActionResult […]

淘汰赛 – 取消变更赛事?

我有一个绑定到视图模型上的observable的复选框。 我要求基本上弹出一个“你确定吗?” 如果用户将其从true更改为false,则显示确认提示。 我有一个可怕的时间找出使变化“可取消”的最佳位置。 。 。 1)点击事件的jQuery处理程序2)Viewmodel内部订阅“beforeChange”3)Viewmodel内部订阅(正常) 在任何情况下,我都非常希望有机会直接取消更改,而不是对更改作出反应,如果需要,可能会将其恢复为之前的值。 Knockout的订阅活动是否让您有机会取消更改? 任何见解将不胜感激。 谢谢!

KnockoutJS,在ajax调用后更新ViewModel

我正在使用Knockout和Knockout Mapping插件。 我的MVC3 Action直接返回一个View而不是JSON,我将我的Model转换为JSON。 这是一个数据输入表单,由于系统validation的性质,所有这些都在服务层中完成,并在ViewModel中的Response对象中返回警告。 初始绑定和更新正确地处理了导致我出现问题的“更新后”行为。 我的问题是在调用AJAX POST并且接收我的JSON响应后,敲除不会更新我的所有绑定…就像observable / mappings已经下降一样 如果我包含一个额外的ko.applyBindings(viewModel); 在成功的事情确实有效…但是多个绑定会出现问题,并且我确定这不是正确的解决方案。 这是HTML / Template / Bindings Save Listings Correct the Following to Save {{each(i, warning) Response.BusinessWarnings}} {{/each}} Key Information Project Name 这就是Knockout / Script @{ var jsonData = new HtmlString(new JavaScriptSerializer().Serialize(Model)); } var initialData = @jsonData; var viewModel = ko.mapping.fromJS(initialData); viewModel.save = function () […]

如何使用KnockoutJS向表添加客户端分页?

如何使用KnockoutJS添加分页? 我目前的代码是: //assuming jsondata is a collection of data correctly passed into this function myns.DisplayFields = function(jsondata) { console.debug(jsondata); window.viewModel = { fields: ko.observableArray(jsondata), sortByName: function() { //plus any custom functions I would like to perform this.items.sort(function(a, b) { return a.Name < b.Name ? -1 : 1; }); }, }; ko.applyBindings(viewModel); } 我的看法: {{each fields}} […]

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 { […]