问题标签 [knockout-mvc]

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 投票
2 回答
4438 浏览

typescript - 将分层 JSON 映射到 TypeScript-KnockoutJS 类型化对象

让我们先谢谢你:)

好的,所以我正在尝试使用 knockout.mapping 插件从匹配的 JSON 数据中加载/映射分层的 TypeScript/KnockoutJS 类型的类,层次结构可以达到 N 级。

我知道我可以执行以下操作来映射/加载 JSON 数据中的顶级类。

但是我不知道如何将复杂的 N 度分层 JSON 数据映射/加载到一组 TypeScript/KnockoutJS 类并建立父/子关系。

我已经阅读了无数的文章,但是在涉及到除了简单的父/子示例之外的层次关系时,它们都不尽如人意,而且我无法使用 knockout.mapping 插件找到任何内容。

这是我希望映射/加载的 TypeScript 类的精简定义。我是一名 c++/c# 开发人员,所以这种性质的 JavaScript 对我来说非常陌生。

打字稿对象

JSON 看起来像这样:

0 投票
1 回答
297 浏览

javascript - KO 单页应用。异步数据调用随机失败/不绑定

我有一个带有多个下拉菜单的屏幕。每个都通过 web api 调用填充。我在一个活动目录环境中。我正在使用 Durandal SPA 框架。

在此处输入图像描述

目前我在我的视图激活时加载我的下拉列表。例如。

[A] 这似乎是随机的,取决于服务器负载量(我猜)我的下拉菜单不会被填充..

[B] 一些下拉菜单依赖于另一个下拉菜单的值。我已经通过使用淘汰订阅事件来实现这一点。并更新我的可观察集合。

Javascript

html

例如,如果我必须选择建筑物值,则楼层下拉列表必须获得新值。API调用确实发生了,似乎可观察数组得到了更新,但这些值似乎没有反映在视图上。

Chrome 控制台日志

我能做些什么来确保每次调用都填充我的查找/下拉列表。以及它们的执行顺序保持指定。

我试过这样的事情,但感觉不对。我还向 durandal http 帮助程序添加了一个异步错误重载,但它似乎没有用......有什么想法吗?:\

更新

我调查了我的异步调用过载。最终成为罪魁祸首,一旦我修复它,我的数据似乎不断加载。唯一的副作用是我的服务器端数据集都没有异步加载。(我希望我不会被钉在十字架上)。

0 投票
1 回答
2918 浏览

knockout.js - 杜兰达尔/淘汰赛。更新其他视图/视图模型

Durandal 有一个称为 shell 的基本视图。

我在其上添加了一个搜索框,以允许管理员/质量保证用户模仿任何系统用户。在按钮上单击我希望能够更新当前显示的任何视图的视图。

  • Shell (Blue) View (Red)

我将如何着手,在我的子视图上公开一个函数,以便我可以从 shell 调用它,或者从子视图挂钩到 shell 的按钮单击事件。

问题:

Durandal 是否公开了我可以用来冒泡或将事件传递给不同视图或父容器的任何钩子?

0 投票
1 回答
446 浏览

javascript - 更新 ObservableArray 时 UI 不更新

当用户单击 UI 中列表(html 表 tblAllCert)中的一行时,我会触发一个单击事件来填充另一个应填充第二个 html 表(tblCertDetails)的可观察数组。我的点击事件触发,我可以看到数据返回,我可以看到可观察数组中的数据,但我的视图没有更新。

这是代码中序列的概述-

第 5 步应该更新 UI(特别是 tblCertDetails html 表),但是 UI 没有更新。

这是我的看法-

我的视图模型-

以及我的数据服务的相关摘录-

为什么 UI 不更新的想法?

0 投票
1 回答
1558 浏览

knockout.js - 淘汰赛 - 如何使用淘汰赛将多选列表框项目(任何订单选定项目)传输到另一个列表框?

我有两个多选列表视图(dropdownList multiple),当用户在第一个列表中选择一个选项时,自动插入/传输到第二个多选列表(dropdownList),并从第一个多选列表中删除该选项。

0 投票
1 回答
693 浏览

asp.net-mvc-4 - 在 MVC 4 中使用 Knockout MVC 将数据与嵌套对象绑定

我正在使用Knockout MVCfrom here将淘汰赛集成到我的网站,但我遇到了问题。如果我的模型包含另一个对象,则绑定将不成功。例如,这是我的模型:

这是我的ProductModel

这些模型仅用于测试,因此非常简单。这是我要显示的视图:

但它失败了。什么都没有出现。<input/>是空白的,<span>. 这里有什么问题?我想绑定上下文有问题。请帮我。太感谢了。

已编辑!这是自动生成的 HTML 的一部分:

绑定:

视图模型:

0 投票
1 回答
329 浏览

asp.net-mvc-4 - KnockoutMVC Foreach Lambda 过滤器(或任何过滤器)

我已经能够创建一个循环页面列表的显示。这将显示 DB 表中的所有页面,如下所示。

我希望能够过滤由 Foreach 上的 lambda 表达式显示的内容。目前返回 IEnumerable 类型,即使最后使用 ToList(),以下内容也不起作用。

我可以得到我想要的结果,但是这样做似乎很麻烦。如果我使用相同的检查向每个字段添加可见检查,我只会看到我想要的字段。

是否有更好的方法与 foreach 一起过滤列表,或者目前是否设计为始终返回完整集?

0 投票
1 回答
642 浏览

asp.net-mvc - knockoutmvc - 无法解析绑定

我有一个 ASP.NET MVC 站点,我正在尝试让 knockout-mvc 使用它。

我在名为的 C# 代码中创建了一个视图模型,Refund其中包含一个Voucher被调用的Voucher类型和一个List<Country>被调用的Countries. Voucher 有一个int名为的变量VoucherNumber

这个视图模型被传递到一个强定义的视图中Refund\Index

我试图让敲除-mvc 将 Refund.Voucher.VoucherNumber 中的值绑定到文本框,并将值绑定到Refund.Countries下拉列表中。在控制器上,我对 Voucher.Vouchernumber 的值进行了硬编码,并将两个国家添加到 Country 列表中。

这是我的查看代码:

当页面加载时,两个控件都没有绑定。

当我查看生成的源代码时,会生成以下代码

knockout-2.2.0.js 和 knockout.mapping-latest.js 都包含在页面中

我得到的错误是

然后我更改了 Refund View 模型,使其具有属性 VoucherNumber 并让文本框引用它而不是 Voucher.VoucherNumber 属性

当我运行它时,我遇到了同样的无法解析绑定错误,但这次是针对国家/地区

有人知道是什么原因造成的吗?

0 投票
1 回答
1394 浏览

knockout.js - 禁用/删除通过敲除选项绑定创建的选择选项

我有一系列用户可以选择的选项,我可以通过一个可观察的数组进行跟踪。数组本身来自一个模型,我通过 Knockout Mapping 扩展 (ko.mapping.fromJS) 将其引入淘汰赛。一切正常。

解释这一点会变得冗长,并且可能会导致更多混乱,请参见下图:

情况

基本上:

  • 我有一个网络输入表单(它是一种配置器)
  • 项目列表非常大,我会说 10 左右可能的项目可以添加到配置中
  • 当用户添加一个项目时,我将一个默认的“项目 A”推送到绑定到选项的数组中,并且它被渲染得很好。
  • 我正在尝试做的是在添加一次后将项目 A 从可选择状态中删除。如果删除了,应该可以重新添加
  • 所有这一切发生的方式是通过 KO observables - 一个跟踪可用选项,另一个跟踪“选定”选项。正如我所说,一切正常,我正在尝试根据请求对其进行调整。

最初 - 我在想 - 我会让用户添加重复项并通过验证处理重复项 - 如果这是唯一的选择,我可能会退回到它。

我发现“对生成的选项进行后处理”,但提供的示例声明了内联数组,我不确定如何将这种类型的回调附加到我使用映射扩展自动映射的可观察数组。

简而言之,我想知道是否有人知道如何禁用先前的选择(记住所有选择都在一个可观察的数组中,而 SELECTED 的在另一个数组中) - 或者鉴于来源是否不可能我的数据。因此,在图像中选择的粉红色注释中-理想情况下,我希望只显示“项目 B 和项目 C”-但如果可以禁用项目 A ,那也可以。

我不知道 DOM 的 jQuery 操作是否可行?它必须在数据绑定之后发生,并且可能会变得混乱。

根据这里的答案 - 我的下一个屏幕有两个级联下拉菜单,我正在考虑应用这种相同的独特选择方法 - 但要组合。

一些代码(简化以保护有罪)

**Javascript/HTML(再次剪断相关部分)**

包含这些东西的 Html 表(注意通过所选项目的 foreach,并绑定到所有项目数组):

0 投票
2 回答
1805 浏览

asp.net-mvc - 如何在淘汰视图模型 js 中使用 mvc4 模型值

我正在使用带有 ASP.NET MVC 的 Knockout 这是我的视图,它由 MVC 控制器填充

HTML

控制器

ViewModel.Js

在我的页面渲染完成所有这些之后,我的输入没有指定的值James

更新

我告诉你们整个场景,在我的应用程序中,用户单击signup with facebook按钮,facebook 将用户返回到我的xyz操作方法,现在我想在xyz视图中显示用户名。那么我怎么能用 api 做到这一点,因为@Anders 说我要通过 Web APi 做到这一点。

提前致谢 。