在 knockout.js 中将 observable 从一个视图模型传递到另一个视图模型

Posted

技术标签:

【中文标题】在 knockout.js 中将 observable 从一个视图模型传递到另一个视图模型【英文标题】:pass observable from one view model to another in knockout.js 【发布时间】:2018-01-18 20:29:19 【问题描述】:

在一个视图中,我有一个按钮可以导航到另一个视图“addWork”。 我想将一个可观察对象从视图模型传递给与 addWork 视图关联的视图模型。 我已经在视图模型的构造函数中添加了 addWork,我只是不确定还能做什么。

ko.applybinding 上的 url 动作如下,这个工作正常,我只需要修改,所以我传递了 observable。

"@Url.Action("AddWork", "Work")")

按钮绑定到这个函数:

   self.AddWork = function () 
            window.location.href = addWork;
        

【问题讨论】:

这需要进一步解释。您是否正在尝试将一个可观察对象从您的服务器端控制器传递到一个新的 html 视图?鉴于 @Url.Action 我假设您使用的是 asp.net MVC? 是的,对于您的两个问题。我对 MVC / MVVM 还很陌生,并试图在我前进的过程中学习它。 我认为这行不通。可观察对象纯粹是一个 javascript 概念,通常无法在被发送到服务器并返回时存活下来。你能解释一下为什么你需要 observable 而不仅仅是 observable 的内容吗? 我想内容可以,老实说我不完全确定它是否应该是可观察的。我想要实现的只是将 id 从一个视图传递到另一个视图 如果您知道 ID,可以将其放入您的 @Url.Action 语句中,例如 Url.Action("AddWork", "Work", new id = myID ); 【参考方案1】:

observable 纯粹是一个 javascript 概念,通常无法在被发送到服务器并返回时继续存在。你最好只发送 observable 的内容而不是 observable 本身。

如果您只需要发送一个 ID,那么您可以使用 asp.net MVC 将其放入您的 @Url.Action 语句中,例如 Url.Action("AddWork", "Work", new id = myID );

【讨论】:

以上是关于在 knockout.js 中将 observable 从一个视图模型传递到另一个视图模型的主要内容,如果未能解决你的问题,请参考以下文章

knockout.js - 数据绑定文本默认值

带有 knockout.js 和 ORM 的 TypeScript

Knockout.js 和 Jquery Mobile

使用 Knockout.js 在表单输入上切换按钮状态

GroupBy,在 knockout.js 中过滤

用于在 url 中查找部分字符串的 Knockout.js 数据绑定