问题标签 [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 投票
1 回答
279 浏览

javascript - 使用通过 JavaScript 添加的按钮呈现 KO 模板数据时遇到问题

如果标题完全具有误导性,我提前道歉。我整天都在处理这个问题,我想看看是否有人可以提供帮助。

概述: 我们所有的模板都预先加载到 DOM 中。以前,所有表单(模板)都设计为显示在现有页面上。但是,我们最近将所有模板移动到 jQueryUI 对话框中显示。我已经成功地移动了所有必要的代码以使其工作,但一个模板除外,我相信这是因为在进行搜索后,打开带有模板的 jQueryUI 对话框的按钮已加载到 DOM 中。

“添加”按钮调用 ViewModel 中的“addUos”函数,以便用户可以继续添加所需的任意数量的表单。

HTML

模板:(使用 TWIG 作为模板引擎)

jQueryUi 对话框:

JavaScript:

此代码创建模板将在其中呈现的 div

此代码位于 for 循环中,并在基本网格中创建所有用户条目。为每个条目创建一个添加和编辑按钮。编辑按钮工作得很好,但添加按钮将根据需要打开对话框,但不会显示模板。在使用 Chrome 开发工具进行测试后,VM 中的 addUos 函数在单击时不会被触发。(这是我的主要问题)

然后我将绑定应用于特定元素

ViewModelObj:(我目前有 2 个独立的虚拟机)

视图模型:

我包含了我会考虑的所有代码,但如果您需要任何其他信息或代码,请告诉我。先感谢您!

0 投票
1 回答
532 浏览

asp.net-mvc - 淘汰赛 MVC - IsAssignableFrom 和 MethodCallExpression 的 VB.NET 问题

我在使用名为 Knockout MVC 的库时遇到问题。它是一个围绕 Knockout.js 的 .NET 包装器。虽然它在基于 C# 的 ASP.NET MVC 项目中使用时效果很好,但在基于 VB.NET 的项目中根本就不行,我找到了原因。

当调用库的项目是用 VB.NET 编写的时,条件总是计算为 False。C# 中的相同点:完美运行。

由于我不太确定是什么导致了这种不同的行为,我认为询问社区可能是个好主意。也许有人知道如何将这一行翻译成适用于 C# 和 VB.NET 的东西。

代码可以在 ~ 第 260 行找到

[编辑]

澄清一下:上面的代码不需要翻译成 VB.NET。问题在于,它包含的条件根据是从 C# 还是 VB.NET 代码调用而返回不同的结果。我相信 IsAssignableFrom 对于 VB.NET 和 C# 的行为不同......所以我需要知道如何让这个条件独立于它被调用的语言而工作。

[编辑] - 示例 以下步骤重现了该问题:

  1. 使用 VB.NET 在 Visual Studio 2012 中创建一个新的 ASP.NET MVC 4 项目
  2. 通过包管理器控制台添加 Knockout MVC (Install-Package kMVC)
  3. 忽略错误(Methods 为 null),这是 NuGet Script 错误,手动在 Global.asax.vb (Application_Start) 中添加以下行:

    ModelBinders.Binders.DefaultBinder = 新 PerpetuumSoft.Knockout.KnockoutModelBinder()

  4. 将以下配置添加到 BundleConfig.vb

    bundles.Add(New ScriptBundle("~/bundles/knockout").Include("~/Scripts/knockout-{version}.js", "~/Scripts/knockout.mapping-latest.js", "~/Scripts /perpetuum.knockout.js"))

  5. 在 Modernizer 下方的 _layout.vbhtml 中渲染 ScriptBundle

    @Scripts.Render("~/bundles/knockout")

  6. 将新模型添加到模型文件夹

    导入 DelegateDecompiler

    公共类 HelloWorldModel

    结束类

  7. 将新控制器添加到 Controllers 文件夹

    公共类 HelloWorldController 继承 PerpetuumSoft.Knockout.KnockoutController

    结束类

  8. 编译项目,以便 MVC 扩展了解模型

  9. 右键单击控制器中的索引操作并选择“添加视图..”
  10. 保留视图名称并选择创建强类型视图,选择 HelloWorldModel 作为模型;将其余部分保留为默认选项,然后单击添加
  11. 在视图顶部添加 Imports 语句

    @Imports PerpetuumSoft.Knockout

  12. 在代码部分创建淘汰赛上下文

    Dim ko = Html.CreateKnockoutContext()

  13. 定义视图并在 h2 标签下应用模型

    <p>名字:@ko.Html.TextBox(Function(m) m.Firstname)</p>
    <p>姓氏:@ko.Html.TextBox(Function(m) m.Lastname)</p>
    <h2>你好,@ko.Html.Span(Function(m) m.Fullname)!</h2>

    @ko.Apply(模型)

现在,如果您编译并执行应用程序并调用 HelloWorld 控制器 (localhost:nnnnn/HelloWorld),那么您将在 ko.Apply(Model) 行上引发 NotImplementedException。

如果在使用 C# 创建 ASP.NET MVC 项目时重复上述步骤,一切都会按预期进行。

0 投票
1 回答
5218 浏览

asp.net-mvc-4 - 部分视图中的敲除 MVC 模型绑定

我正在使用淘汰赛 MVC。在我的页面中,我渲染了几个局部视图。在每个局部视图中,我传递一个模型,即主模型的子模型。而且我收到一个错误“未捕获的错误:您不能将绑定多次应用于同一个元素。” 这是一些代码。

主视图

页面面板局部视图

高级搜索部分视图

模型

我明白,问题出在@ko.Apply() 字符串中,但不明白为什么。有没有办法解决这个问题?

0 投票
3 回答
352 浏览

knockout.js - 如何在 MVC 中使用 Knockout 绑定静态数据

我第一次使用带有 MVC 的淘汰赛。我正在尝试显示名称和姓氏,它们将是静态的,并将按照控制器类中定义的方式显示。我已经尽我所能来显示数据,但它的输出并不像我预期的那样。我的代码如下: 模型类

这是我的控制器类

这是我的索引类

我的输出是这样的:

姓名:

姓:

如您所见,它没有显示我在编码部分提供的名称,请帮助我并告诉我该怎么做才能获得所需的输出。

0 投票
0 回答
362 浏览

knockout.js - 如何在 MVC 应用程序中绑定 Knockout Observable

我正在将 Knockout 与 MVC 一起使用并希望显示可以在运行时更改的文本,我的应用程序正在向我显示我在编码部分中提供的数据,即静态数据,但是当我更改文本框中的数据时,它没有提供任何结果。

我的代码如下: -

模型类

控制器类

查看课程

它向我展示了编码中给出的值,但是在运行时更改时,它不会更新它的值。

0 投票
1 回答
176 浏览

knockout.js - 强制淘汰计算 observableArray 的长度为 1(一)

我有一个computed observableArray被调用者,它从另一个被调用者selectedToppings返回过滤后的数据。 应该返回所有属性设置为的浇头。在某些情况下,只能选择一种浇头,例如客户订购儿童大小的冰淇淋时。这是我的代码。observableArraytoppingsselectedToppingsobservableselectedtrue

也在jsfiddle上。

availableToppings如果应该遵循它,我正在使用订阅来强制执行单顶规则。此实现不起作用,我不知道如何修复它。

什么不起作用:

  1. 确保未选中多选。
  2. 单击可用洒水。
  3. 单击可用的棉花糖。
  4. 单击可用的坚果。
  5. 单击可用洒水。
  6. 注意选择是如何没有改变的。
0 投票
1 回答
139 浏览

json - 使用映射插件的 Knockout 和 observablearrays

下面的代码在我第一次调用时工作正常,但是在第二次调用中,gridviewmodel 变得混乱,所有数据都变得多余

我尝试使用 removeAll() 清除可观察数组,但它不适用于我。

任何想法?

只是对于任何人将来可能会遇到这个问题,我设法通过在 Knockout 映射插件中调用 ko.mapping.fromJS(data, gridviewModel.items) 来修复它完整代码是

希望这可以解决其他问题。

0 投票
1 回答
1823 浏览

asp.net-mvc - 如何编码用于显示和回发的javascript字符串?

我有一个 MVC 应用程序,它正在客户端上呈现以下 javascript:

JSON 数据是使用JavaScriptSerializer序列化对象然后通过 Html.Raw() 帮助程序运行结果的结果。

然后使用此数据加载淘汰视图模型并在悬停时显示弹出窗口。在弹出窗口中,仅显示“Description”属性的“sometext”部分,因为在设置 rawData 变量时字符串被转换为未编码版本(即 \u003c 转换为 <)。

此外,这些数据最终会在保存数据后被发送回服务器,并且 ASP.NET 验证启动并在检测到“

我暂时通过向我的 Knockout 视图模型添加一个计算属性来解决这个问题,如下所示:

通过这种方式,我可以从弹出窗口访问转义属性,并且当我序列化我的视图模型(使用 .toJSON())时,未转义的值不会发送回服务器。

有没有更全局的方法来处理这个问题,而不是为每个可能有一些似乎是错误请求的文本的对象创建计算属性,同时又不影响安全性?我已经考虑过序列化例程的重载/帮助程序,它将接受属性列表以应用查找/替换我认为这必须以类似于我已经处理过的方式逐个处理完毕。至于将数据发送回服务器,我可以覆盖我的视图模型上的 toJSON() 方法并删除不需要发送回的属性,但这对我的弹出窗口没有帮助。

想法?

0 投票
1 回答
710 浏览

javascript - Binding a datepicker max date in future based on checkbox in Knockout.js

I have a datepicker whose max selectable date is six months in the future. And if I select a checkbox, the max selectable date can be any time in the future. I'm trying to do this with Knockout.js.

This would be my date picker input options:

This would be my checkbox input:

I have a subscribe binding based on this:

and the code for subscribable is:

0 投票
1 回答
75 浏览

javascript - 我怎样才能让用户点击一个按钮来验证表单?

我有一组按钮,需要单击其中一个才能进入下一个表单:

我正在使用 jquery validate,我想编写一个validate方法,但我不能使用我的典型方法,例如给文本字段一个 required 值,例如

即使我知道语法,我认为这也无济于事,因为并非所有按钮都是必需的。有没有办法利用active单击我的三个按钮之一时呈现的属性?