问题标签 [knockout-3.0]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
knockout.js - 没有使用自定义绑定和 defineProperty 调用敲除绑定 value.update
我有一个 Knockout 扩展,knockout-secure-binding,我们遇到了一个问题。
特别是在使用 时Object.defineProperty
,就像knockout-es5所做的那样,当在 上触发更改事件时不会调用value
绑定的函数。update
input
我的单元测试说明了这种特殊性。这有效:
这(作为淘汰赛 es5 定义属性的方式)不起作用:
如前所述,在后一种情况下,当value.update
被调用时不会被input.dispatchEvent
调用。
自定义绑定正在返回它自己的valueAccessor
,所以我希望问题与此有关。让我感到特别奇怪的是,它可以与对象属性一起使用,但不能defineProperty
。
jquery - 淘汰 observableArray 不更新 JQuery Accordion
我已将我的网站更新为最新的 JQuery、JQueryUI 和 KnockOutJS。
从那时起,当我将项目添加到我的可观察数组时,我的手风琴拒绝更新。当将 KnocKOutJS 2.0.0 版与 JQuery 的旧版本一起使用时,这工作得很好。
我已经在 JSFiddler 中重现了这个问题,希望能提供任何帮助。javascript 是我实际代码的高度简化版本。
http://jsfiddle.net/glenb/M9222/6/
任何帮助将不胜感激。我的模型如下所示:
的HTML:
最后我最初填充它并绑定它
jquery - 淘汰赛 3 的数据绑定问题
在我的应用程序中,我试图将引导程序和淘汰赛集成到 MVC4 中。我有两个下拉控件,用户可以从中选择一个项目,然后我使用 jQuery 填充旁边的文本框。当我使用 ViewBag 和 @foreach 循环时,这可以正常工作,但是当我尝试使用淘汰赛 observables 时,我遇到了问题。
我可以看到来自 ViewModel 的数据显示在下拉控件中,但它不会更新文本框中的该值。我应该使用特殊的数据绑定属性吗?
一些代码...
问题在于名称 foreach,因为颜色工作正常。
我正在使用它来查找页面上的控件并获取所选项目并将其放置在输入控件中......我已经验证这现在仅适用于颜色下拉列表。
我尝试了以下两种方法均无济于事。让我们从第一个响应开始......
我在页面顶部的标签中放置了以下内容
接下来,我在页面顶部放置了一个新的:
最后,我将此代码放在引导下拉列表中:
下拉列表是空的,并且 div 永远不会更新。
好的,在使用我创建的 ViewModel 并集成 click: function() {$root.Name(Name);} 之后,我现在可以看到我希望的值更新了。
这是我的视图模型代码
jquery - Knockout 3.0 输入选项卡关闭清除值
我有一个项目,直到最近才使用 Knockout 2.3。当我们升级到 3.0 时,我们注意到我们对 jQuery 自动完成的绑定似乎不再保留它们的价值,因为第一次失去了对所述元素的关注。在自动完成第一次清除该值并恢复对该元素的焦点后,就会发生正确的行为。
我们正在使用 RP Neimeyer 的 jQuery AutoComplete 绑定处理程序(对一些与此问题无关的自定义自动完成列表和行为进行了一些修改)http://jsfiddle.net/rniemeyer/YNCTY/
关键是,这个自动完成功能在 Knockout 2.3 中没有问题,但在我们升级后在整个应用程序中被破坏了。为了验证这个理论,我暂时降级到了 Knockout 2.3,问题就解决了。然而,永久降级到 2.3 也不是一种选择,因为我们正在将 observableArray 更改功能添加到 3.0 中,我们正在使用它来实现新功能。
我们的绑定看起来像这样:
视图模型如下所示:
}
在http://jsfiddle.net/aaronbastian/xYm6U/6/有一个更广泛的代码版本,包括必要的自定义绑定处理程序(虽然不是全部,但足以证明问题)
要重新创建该行为,只需开始在自动完成中键入一个可识别的值。自动完成框打开后,关闭该输入并切换到下一个。输入中的值完全清除。如果您完成在自动完成中输入值(没有选择它)并关闭,甚至会发生这种情况。
在此示例中,无论输入的值是否包含在列表中的某个项目中,都预计关闭选项卡不会清除自动完成功能。
对此的任何帮助将不胜感激。谢谢!
asp.net-mvc-4 - Knockout observable array
In my ViewModel for my MVC4 application I have some code to get names from an ajax call and populate a simple control within my page, which is using Bootstrap 3. As you can see below I have a hard-coded array which works perfectly. With the ajax call, I see the data in the UI but it does not update my control and I have NO idea why. I have verified the data exists and I have also tried setting self.Names = ko.observableArray within the ajax call. Is there a simple reason why? As I said I see the data within my form in both scenarios but I am not seeing the update I expect.
Here is the Response from the body via the ajax call:
My HTML
knockout.js - 为淘汰赛中的多个可观察对象订阅同一事件
我试图通过淘汰来实现以下行为:当用户提交他的登录名和密码并且它是错误的时 - 向他显示错误消息。当用户更改任何输入时 - 隐藏消息。
我用计算的 observable 进行了尝试,并明白这不是正确的方法,在阅读了有关订阅的文档后,我发现了. 因此,当我订阅每个input
. 问题是我将两个 observables 都订阅了同一个事件(因此复制了代码)。我知道我可以将重复的代码放入一个函数中,并为每个可观察的函数订阅,但这对我来说也不是很好。
够了这个空话,这是我的小提琴(点击让它出错,然后输入一些东西input
),这就是我这样做的方式:
我试图在这里阅读类似的问题,但无法理解我如何将多个可观察对象订阅到同一事件。
knockout.js - 如何处理淘汰赛中的许多模板?
在使用淘汰赛时,我经常使用模板。因为我正在开发单页应用程序,所以我使用的模板数量越来越多。
我的主要 html 开始看起来像这样:
尽管如此,一切都按预期工作,我被大量模板吓倒了,一开始就被加载。
那么关于这个问题是否有任何最佳实践,或者具有良好淘汰经验的人如何处理它?
jquery - 删除 Knockout js 中的绑定
我在 jquery mobile 中使用 koGrid。当用户单击一行时,它将进入详细信息页面。在该页面中,用户可以更新数据并保存它。blow 是我的实现
工单对象
服务方式
当我单击网格中的行按钮时,它将进入“ticketDetailsPage”,我可以更新值并将其保存到服务器。首先保存部分功能工作正常,如果我再次进入网格加载另一张票并save "保存信息会出现两次"
如果我保存 5 张票“保存”消息会出现五次。我认为有旧票活动没有使用 DOM 更新,谁能帮我解决这个问题,我已经尝试解决了两天,但仍然找不到合适的解决方案,
先感谢您
asp.net-mvc-4 - 显示存储在 ViewModel 中的值并发出警报
我的应用程序在 viewModel 中有许多项目,我希望看到这些值显示在警报框中,以便我可以看到其中实际存储的内容。尝试将此视图模型传递回我的控制器时,我没有看到任何值,而是收到未定义“viewModel”的错误。
这是我的视图模型脚本的示例
与创建全局变量或类级别变量类似,我希望这个 viewModel 包含我所有可观察项目的所有当前值。
asp.net-mvc-4 - 将 ViewModel 传回控制器
我有一个集成 Bootstrap 和 Knockout 的工作应用程序。这个应用程序从我的控制器中提取数据并按照我的预期将其显示在 UI 中。当我单击或更改值时,我可以看到值已更新,但我似乎看不到将数据传回我的控制器以进行保存。我只需要知道如何解决我必须允许我将 selectedRequestorName 传递回控制器的问题。
这是一个示例类
界面
这是带有种子数据的存储库
我的 HomeController 如下所示
在我的 Index.cshtml 中,页面顶部的脚本标记中有以下内容
最后是包含显示数据的控件供用户选择...