问题标签 [knockout-viewmodel-plugin]

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.

0 投票
1 回答
8892 浏览

knockout.js - Knockout.js 更新视图模型

在页面加载时,我正在将 JSON 数据转换为这样的视图模型

页面加载后,我正在调用 ajax 服务器函数来更新此视图模型。

在 tha ajax 成功回调中,我写过

当我尝试使用此更新模型更新视图模型时,我的整个模型变为空白

我尝试了以下方法

  1. 将 data.d 推送到 oldModel.availables 可观察对象中。当我推送数据时,数组对象不会被转换为可观察对象,而是将项目添加到可用数组中。而在最初(页面加载时),对象被转换没有问题。

  2. 尝试直接更新视图模型,在这种情况下整个模型变为空白

    ko.viewmodel.updateFromModel(oldModel, updatedModel);

旧模型截图

旧型号

更新模型的片段

更新模型

正如我所说,当我直接推送数组对象(data.d)时,不会像 ajax 之前的第一种情况那样自动创建可观察对象。

为什么在逻辑相同的情况下会发生这种情况?我正在使用http://coderenaissance.github.io/knockout.viewmodel/自动映射对象。

任何指示都会有所帮助

0 投票
1 回答
435 浏览

json - How do I extend a knockout viewmodel when using the knockout viewmodel plugin?

I'm using the knockout.viewmodel plugin (http://coderenaissance.github.io/knockout.viewmodel/) to generate my viewModels on the fly from JSON returned via WebAPI.
I'm having an issue extending the viewModel though.
Here's a sample of my test script:

JSON:

Markup:

JavaScript:

The JSON is processed and bound properly, but the extended function doesn't get wired up.
I don't get any exceptions; the alert just doesn't fire.
Any insight would be greatly appreciated.

0 投票
2 回答
64 浏览

knockout.js - 使用 knockout.viewmodel 插件时,如何在扩展方法中正确引用 viewModel?

我正在扩展视图模型。我需要实现该addEmployee方法,以便它正确引用 viewModel。

这是我迄今为止所拥有的:

JSON:

JavaScript:

我将不胜感激任何帮助。谢谢!

0 投票
2 回答
328 浏览

knockout.js - 如何映射使用 ko.viewmodel 计算的字段

不知道如何映射使用 ko.viewmodel 计算的字段有人知道它是如何完成的吗?非常感谢任何帮助。

编辑:

我很遗憾没有更清楚,我编辑了我的问题,我正在使用 ko.viewmodel 插件将对象转换为 ko 模型,但不是作为字段 ko.computed 对象被定义为 ko 当地图被识别为一个计算:

我的完整代码在这里DEMO

编辑2:

感谢您的回复,我将最终代码与我想要的功能放在一起:

JS:

HTML:

最后的演示在这里FINAL-DEMO

0 投票
1 回答
77 浏览

javascript - 在视图模型之间调用 (KnockOutJS)

我正在使用 KnockoutJS 开发基于视图模型的插件。有什么方法可以访问在同一应用程序中运行的另一个视图模型的功能和属性?像这样的东西:

我的视图模型:

而另一个视图模型:

otherViewModel的可观察对象控制某些常用功能,例如弹出窗口和掩码。有没有办法在 myViewModel 中实例化otherViewModel设置这些属性?

或者有没有办法全局获取和设置它们?

请小心行事,因为我对这种范式很陌生。谢谢你。

0 投票
1 回答
62 浏览

javascript - KnockoutJS:函数范围错误

此代码位于 KnockoutJS 视图模型中:

为什么在计时器回调中无法识别该属性?看起来像一个范围问题,但我似乎无法解决它。

0 投票
1 回答
170 浏览

knockout.js - 在每个数组元素上扩展 ko.viewmodel 失败

我可以创建一个视图模型,这样一组带有收藏/非收藏类型图标的可点击 div 可以正常工作。我使用knockout来绑定css样式,设置了合适的背景图片。收藏功能是这样的:

HTML:

plnkr:http ://plnkr.co/edit/LEwQd544rxrzhNyoyO5F?p=preview

但是,我想用 ko.viewmodel 插件达到同样的效果。(好吧,我也希望能够使用 ko.mapping :-)) ko.viewmodel 插件参考在这里:
http ://coderenaissance.github.io/knockout.viewmodel/

扩展使用 ko.viewmodel 创建的视图模型的语法非常简单。这是他们的例子:

我可以使用 ko.viewmodel 成功地将数据绑定到我的视图模型:plnkr:http ://plnkr.co/edit/afr9B8lPe1W3jCTrfH3w?p=preview

但是,当我尝试扩展视图模型以使单击切换行为也存在时,它会失败并显示以下消息:

未捕获的 ReferenceError:无法处理绑定“with: function(){return FavoritesVm}”消息:无法处理绑定“foreach: function (){return favorites()}”消息:无法处理绑定“event: function (){ return {click:toggleFavorite()} }" 消息:toggleFavorite 未定义

这是我尝试使用的选项对象:

plnkr:http ://plnkr.co/edit/1gez79Q0kvPlRUYFcOfS?p=preview

注意:在 SO 上有一个与此类似的问题,关于扩展 ko.viewmodel 以在 {root} 上添加 ko.computed()。但是,我想为每个 {root}.favorite[i] 添加一个方法。请参阅 如何映射使用 ko.viewmodelhttp://jsfiddle.net/sublimejs/L6Wm3/8/计算的字段

0 投票
1 回答
127 浏览

javascript - Boostrap Modal 重置 KnockoutJS 嵌套的 ViewModels 变量

我是 Knockout JS 的新手,在将它与引导模式一起使用时遇到了一个问题,尽管经过数小时的研究,我仍然无法解决。

这是我的问题:我正在使用嵌套视图模型,并且我注意到,如果我在将模式设置为可见之前或之后尝试更新嵌套 vm 中的任何变量(无论是否可观察),这些变量将被重置为其初始值。这是一个示例代码,可以提供一个想法:

modalB 的 HTML 代码与在第一个 div 中添加data-bind="B"标记非常相似。

这个想法是,用户单击 ModalA 中的按钮将触发 ModalA 的 Show() 函数,该函数反过来从 AJAX 调用和显示的 ModalB 填充 ModalB 的 observables。

在上面的示例中,如果我从 Show() 函数中调用 GetData(),则一旦模式完成加载,varOne 和 varTwo 将被重置为其初始值。相反,如果我在 ViewModelB 被实例化时(即在用户调用 ModalA 的 Show 函数之前)调用 GetData(),那么新值将被保留。

在过去的几天里,我一直在摸不着头脑,试图了解为什么会发生这种情况以及如何最好地解决它。我研究了自定义绑定处理程序、渲染模板和调用引导模式“加载”事件。

有没有人遇到过这种情况?提前致谢!

0 投票
1 回答
60 浏览

javascript - 如何使用由 knockout.viewmodel 插件创建的视图模型绑定到输入元素

我正在使用带有 knockout.viewmodel 插件的敲除。http://coderenaissance.github.io/knockout.viewmodel/

input我缺少或不做的元素上的 textInput 绑定有什么特别之处?

0 投票
1 回答
30 浏览

javascript - 如何将依赖下拉菜单与淘汰赛联系起来

我有一个如下的 json 结构:

我现在想通过以下方式使下拉菜单依赖于给定的可绘制项目:

这是html:

为给定项目更换油漆产品时,应重新加载新选择的油漆产品的光泽。

油漆产品的选定值和项目(即墙壁)的光泽存储在墙壁对象中。

我想避免的是针对每种不同的项目类型重复计算的淘汰赛调用。有没有办法让这种情况在全球范围内发生并以某种方式在上下文中传递?

我正在使用 knockout.js、knockout.viewmodel.js 和 jQuery。