knockout.js 真的采用了 MVVM 模式吗?

2023-12-31

我是 knockout.js 的新手。不久前我读到了 ko 的标题特征。 我不明白ko真的是MVVVM吗?因为他们谈论的只是数据绑定及其易用性。但我确信 MVVM 不仅仅是数据绑定,不是吗?


是的,knockout.js 确实应用了 MVVM 模式。文档中有解释 http://knockoutjs.com/documentation/observables.html#mvvm_and_view_models:

  • A model:您的应用程序存储的数据。该数据代表业务领域中的对象和操作(例如,可以执行转账的银行账户),并且独立于任何 UI。使用 KO 时,您通常会对某些服务器端代码进行 Ajax 调用来读取和写入此存储的模型数据。

  • A 查看模型:UI 上数据和操作的纯代码表示。例如,如果您正在实现一个列表编辑器,您的视图模型将是一个包含项目列表的对象,并公开添加和删除项目的方法。

    请注意,这不是 UI 本身:它没有任何按钮或显示样式的概念。它也不是持久数据模型 - 它保存用户正在使用的未保存的数据。使用 KO 时,您的视图模型是纯 JavaScript 对象,不具备 HTML 知识。以这种方式保持视图模型抽象可以让它保持简单,这样您就可以管理更复杂的行为而不会迷失方向。

  • A view:表示视图模型状态的可见的交互式 UI。它显示来自视图模型的信息,向视图模型发送命令(例如,当用户单击按钮时),并在视图模型的状态发生变化时进行更新。

    使用 KO 时,您的视图只是带有声明性绑定的 HTML 文档,用于将其链接到视图模型。或者,您可以使用使用视图模型中的数据生成 HTML 的模板。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

knockout.js 真的采用了 MVVM 模式吗? 的相关文章

  • Knockout JS - 如何正确绑定 observableArray

    请看一下这个例子 http jsfiddle net LdeWK 2 http jsfiddle net LdeWK 2 我想知道如何绑定可观察数组的值 我知道上面例子中的问题 就是这一行 p Editing Fruit p
  • 将 MouseBindings 添加到数据绑定 WPF ListView 中的项目

    我试图在用户单击 ListView 中的项目时执行 ViewModel 中的命令 当我添加一个ListViewItem在 XAML 中我可以添加一个MouseBinding to its InputBindings
  • MVVM 焦点到文本框

    我如何将焦点集中在TextBox没有指定名称TextBox 目前我正在做以下事情
  • 在 ViewModel 中使用 CollectionViewSource 的正确方法

    我使用拖放将数据源对象 数据库模型 绑定到DataGrid 基本上遵循这个例子实体框架与 WPF 的数据绑定 http msdn microsoft com en us data jj574514 通过这个实现 一切都运行良好 XAML
  • 使用淘汰赛动态显示/隐藏元素

    我有一个表 有四列 即代码 名称 数量和价格 其中 我想动态更改数量列的内容 元素 通常 它应该显示其中显示数量的元素 当用户单击元素时 我想显示该元素 以便用户可以编辑数量 我正在尝试按照 示例2 来实现淘汰赛文档链接 http knoc
  • WebDriver:更改事件未触发

    我有一个使用 KnockoutJS 的应用程序 我正在尝试编写一些测试表单的测试 如果您不了解 KnockoutJS 简单来说 它提供了从我的视图到我的数据模型的绑定 这意味着当我在输入字段中键入值时 我的基础对象会自动使用该输入字段值进行
  • 如何在ZK模板标签中使用if=“some condition”

    我的 ZUL 文件中有一个 标记 并且我想在满足某些条件时 例如 当某些 LABEL 的值更改为某些文本时 使用此模板 请看下面的代码 如您所见 templateStatus 是我的标签名称 但它不起作用 我该如何解决这个问题
  • MVVM 在 ASP.NET MVC 4 Web 应用程序中扮演什么角色?

    当我正在阅读 ASP NET MVC 4 这本书时 我对 MVVM 感到好奇 我开始谷歌搜索 找不到任何关于使用 MVVM 开发 Web 应用程序的书籍 所以我一定在这里遗漏了一些信息 据我了解 MVVM是通过knockout js和其他框
  • 如何使用 MVVM 更改数据网格或列表视图中的内容

    我有一个 MainWindowViewModel DataContext 它公开不同的 ObservableCollections 带有 INotifyProperty 的 poco 对象的视图模型 从组合框中选择一个值后 我想单击一个加载
  • Mvvm 支持自定义 Kendo ui 小部件

    前几天我问this https stackoverflow com questions 24828905 developing custom kendo ui widget问题并得到了一个非常酷的答案 以后我想知道我是否可以使用我的自定义小
  • 有没有办法一次性禁用一堆表单元素?

    我想根据某些条件禁用 HTML 表单元素的一部分 这似乎是执行此操作的理想方法 fieldset fieldset
  • WPF 将枚举列表(或类似的)绑定到复选框列表

    我想将复选框列表绑定到 WPF 中的枚举值集合 枚举不是 Flags 语境 它用于过滤数据网格 其中每个项目都有我的枚举的一个实例 它不一定需要绑定到列表 固定大小的集合也可以 假设您想绑定到枚举的所有可能值 您可以使用对象数据提供者 ht
  • 淘汰foreach绑定无序列表

    首先 圣诞快乐 希望圣诞节那天没有其他人在工作 除非他们是出色的专家并且真的很想帮助我 我正在使用神话般的jQuery 列导航插件 http code google com p jquery column navigation 以多列方式向
  • 文本框和默认按钮绑定更新得太晚了

    我有一个带有这两个控件的简单 WPF 对话框
  • Knockout.js ViewModel 更改回调?

    我正在尝试在 Knockout js 应用程序中实现自动保存功能 有没有办法在 ViewModel 发生变化时分配回调 看看 Ryan Niemeyer 的聪明但肮脏的旗帜 http www knockmeout net 2011 05 c
  • 从外部文件加载淘汰赛模板,无需复杂的引擎?

    我找到了加载外部模板的引擎 插件和函数 但我想知道是否有更简单的方法来做到这一点 像这样的东西吗 模板 html 索引 html div div 这行得通吗 有什么 陷阱 吗 这是我用来加载包含模板集合的模板文件的方法 var loadTe
  • ko.applyBindings 上是否有某种回调可用?

    Using 淘汰赛 js questions tagged knockout js在我们当前的项目中 我们已经多次遇到过这一点 我怎样才能确保某些 Javascript 代码只被执行after页面上的所有绑定均已通过 Knockout 应用
  • 如何在MVVM中实现对话框架构

    我正在开发一个基于 PRISM 框架 Unity Container 的 WPF 4 0 MVVM 应用程序 我想知道在 mvvm 模式中实现对话框的最佳方法是什么 我计划在我的应用程序中使用相当多的东西 所以我想要一些可重用的东西 由于您
  • 将 PDF 嵌入到 WPF 应用程序中

    我正在尝试在 WPF 应用程序中嵌入 显示 PDF 到目前为止 我已经尝试过这些解决方案 但没有成功 在 a 中显示 PDFWindowsFormsHost主持一个AxAcroPdf控制 类似于显示的内容here http hugeonio
  • WPF:Prism 对于小型应用程序来说是不是太过分了?

    如果我不将我的应用程序分成不同的模块 否则我会认为 Prism 确实是可行的方法 我应该使用 Prism 吗 我知道 Prism 提供了一个方便的实现ICommand 我可以自己在一页代码中完成 并为我们提供IEventAggregator

随机推荐

  • 如何使用 lodash 比较对象而不考虑其顺序

    我正在尝试使用 lodash 比较两个对象 如下所示 问题是它总是返回 false 我认为问题在于对象具有不同的键和值顺序 然而 无论订单如何 我都找不到如何比较它的解决方案 如何忽略顺序并正确比较两个对象 var obj1 event p
  • 是否可以更改 sendEmail 中的“发件人电子邮件”?

    我目前正在编写一个脚本 如果 Excel 已更新 该脚本会向用户发送电子邮件 我能够发送电子邮件 但是 在测试时 我注意到 发件人 电子邮件是我的电子邮件 我想将 发件人 电子邮件更改为另一个电子邮件 电子邮件受保护 cdn cgi l e
  • 如何在 k8s 集群中更新 Prometheus 配置

    我在 k8s 中运行 Prometheus 你能告诉我如何更改运行配置吗prometheus yaml在集群中 我只想简单地改变 scrape configs job name my exporter scrape interval 15s
  • Javascript:让用户选择像 Firebug 这样的 HTML 元素?

    我想编写一个浏览器 Chrome FF 扩展 需要选择网页上的元素 我希望它的行为像 Firebug 的元素检查器那样 单击检查箭头 然后可以悬停 突出显示元素 当您单击所需的元素时 系统会检查该元素 我只是对允许用户选择元素的代码感兴趣
  • jOOQ:在单个对象中返回带有 join、groupby 和 count 的列表

    核心问题 如何正确地将查询中的信息获取到对象中 Idea我正在 DAO 中创建函数 这可以归结为以下查询 select A count from A left join B on B aId A aId group by A 我正在寻找一种
  • RXTX gnu.io.PortInUseException:&警告:RXTX 版本不匹配

    我正在尝试使用 RXTX API 通过 Java Marine API 从 NMEA 0183 GPS 获取 GPS 数据 运行 Java Marine 提供的 SerialPortExample java 我返回两个错误 也许它们是相关的
  • Unity脚本执行顺序和Start()

    Unity的文档中有这样一行 默认情况下 不同脚本的Awake OnEnable和Update函数按照脚本加载的顺序 任意 被调用 所以我在这里有两个问题 在这种情况下 任意 是什么意思 是随机的吗 这是否还包括 Start 和 Awake
  • 如何在node.js中使用集群?

    我对 Node js 和 Express 非常陌生 我目前正在通过构建自己的服务来学习它 我最近读到了有关集群的内容 我明白了集群的作用 我无法理解的是如何在生产应用程序中使用集群 我能想到的一种方法是使用主进程坐在前面 并以循环方式将传入
  • 通过c++接口导出整个类

    好的 我会重写问题 1 做的够吗 class declspec dllexport CXyz public int Food printf Food n 这样该类就可以在 exe 中像这样使用 include CXyz h CXyz obj
  • Imageview 和 PagerAdapter

    我想将图像放在 ViewPager 的每个页面中 就像一本书 这些图像来自 url 列表 我的适配器看起来像这样 private class MyPagerAdapter extends PagerAdapter Override publ
  • 警告:基类“A”应该在复制构造函数中显式初始化

    我有以下类结构 class A A A const A src class B virtual A B A B const B src A src class C virtual A C A C const C src A src clas
  • 以编程方式访问 Servlet 3.0 中的 MultiPartConfig

    我使用Servlet 3 MultiPartConfig在我的应用程序中实现文件上传的注释 我需要在运行时设置多部分配置位置参数 而不是在注释参数中硬编码 是否有任何 API 可用于以编程方式访问 servlet 的多部分配置 Thanks
  • ASP.NET WebAPI - 如何使用 $.getJSON 传递对象

    我有一个 ASP NET WebAPI 控件如下 public SomeObject GetBenchMarkData Comment comment do stuff 在客户端 我正在尝试以下操作 var comment ID 0 Tex
  • 如何在OpenCV中用随机颜色绘制圆圈

    我正在使用 SURF 算法与 OpenCV 匹配两个图像 我已经掌握了关键点 现在我想用随机颜色的圆圈绘制这些关键点 我知道如何用函数 cvCircle 在 OpenCV 中画一个圆 但颜色是固定的cvScalar r g b 我希望图像中
  • 为什么 Ember.onerror() 没有捕获断言失败错误。?

    我的代码中有一种情况 我需要跟踪生产中的错误 I used ember js作为我的框架 为了跟踪我使用的生产中发生的错误Ember Onerror它只为我提供任何功能错误跟踪 Ember onerror function error Em
  • 如何让 Python 说话

    我怎样才能让 Python 说出一些文本 我可以将 Festival 与子进程一起使用 但我无法控制它 或者可能在交互模式下 但它不会是干净的 有Python TTS 库吗 比如 Festival eSpeak 的 API 您应该尝试使用
  • Jenkins+Github:我们无法交付此有效负载:无法连接到服务器

    我正在尝试在 GitHub 上配置 Web 挂钩 以便它可以将 POST 发送到http 127 0 0 1 8080 github webhook http 127 0 0 1 8080 github webhook 我的詹金斯正在运行h
  • 使用 FormData 和 multer 上传文件

    我已成功使用以下命令将文件上传到节点服务器multer通过使用输入文件对话框选择文件然后提交表单来模块 但现在我需要创建一个FormData对象 并使用发送文件XMLHttpRequest 但它不起作用 文件总是undefined在服务器端
  • kubespray 仪表板警告禁止弹出窗口

    我正在尝试使用 kubespray 在一台机器上设置一个新的 kubernetes 集群 提交 7e84de2ae116f624b570eadc28022e924bd273bc 运行剧本后 在新的 ubuntu 16 04 上 我打开仪表板
  • knockout.js 真的采用了 MVVM 模式吗?

    我是 knockout js 的新手 不久前我读到了 ko 的标题特征 我不明白ko真的是MVVVM吗 因为他们谈论的只是数据绑定及其易用性 但我确信 MVVM 不仅仅是数据绑定 不是吗 是的 knockout js 确实应用了 MVVM