如何在单独的视图模型之间发出挖空事件
How to emit events in Knockout between separate view models
我来自Angular(它有/有事件发出),我看到Knockout有"observables"/pubsub,尽管我不能完全掌握使用单独的视图模型的概念。
以下是我正在尝试执行的操作的示例:
我在 VM1 中有一个对象数组,当一个元素更新时,我想发出一个事件,说"这个对象已更改,请相应地更新!"并且还传递了该对象。
我在KO文档中找到了这个:
对于高级用户,如果要注册自己的订阅以收到可观察量更改的通知,则可以调用其订阅函数。
myViewModel.personName.subscribe(function(newValue) {
alert("The person's new name is " + newValue);
});
但是,它没有提到谁正在发布对"myViewModel"的任何更改。谁能澄清一下?
在我的示例中,我是否将可观察数组绑定到父对象(可能是 ko)?
编辑:
下面是示例:
用户至少有一个可以管理的用户。
我有一个 VM 负责显示单个用户的用户帐户设置页。我有另一个 VM,负责一次显示所有用户的用户。如果用户单击某行(用户的用户),则会出现一个面板来更改该行的数据。更改行时,我想更新用户用户的主列表。
我建议你将这些视为组件而不是VM。应用程序应有一个 VM,它将使用这些组件。它还将拥有他们需要共享的任何数据项。在您的示例中,当前正在编辑的用户记录将由主虚拟机拥有,并在组件初始化时传递给组件。所有用户组件可以设置当前记录的值,单用户组件将显示并允许编辑值。所有用户组件可以订阅更新并做出相应的响应。
在我看来,组件并不关心谁在更改值,它们只想知道它们所依赖的值何时更改。这个想法是拥有任何不同的独立数据项的一个副本,并在需要使用它的组件之间共享它。
相关文章:
- 如何使用Node.js在JavaScript模块文件之间使用事件处理程序
- 如何在jQuery中获取两个事件之间的时间差
- Angularjs事件与发布/订阅指令之间的通信
- 如何在JavaScript中测量交互和mousedown事件之间的延迟
- jQuery:存储自定义事件之间的数据
- Socket.IO:如何在同一服务器中的Socket.on()事件之间通信/交换数据
- 如何识别源自JS脚本的http请求与HTML
- j查询复选框的更改和单击事件之间的差异
- 在事件之间传递变量
- 用户名实时更改中的 keyup() 事件和 change() 事件之间的差异
- jQuery mobile - 如何在
和 Click 事件之间连接 - 如何在两个onclick事件之间传递参数
- js文件或html模板中的init事件之间的区别
- 在两个jQuery点击事件之间传递数据
- .click()事件之间的jQuery焦点
- html页面显示和加载事件之间的区别是什么?
- 在许多事件之间找到顺序
- 在鼠标事件之间传递数据
- 拖放事件之间是否有定义的顺序
- 层叠鼠标事件之间的Div与画布在它的顶部