在视图模型之间调用(KnockOutJS)
Calling between viewmodels (KnockOutJS)
我正在使用KnockoutJS开发一个基于视图模型的插件。是否有任何方法可以访问在同一应用程序中运行的另一个视图模型的函数和属性?类似这样的东西:
我的视图模型:
function myViewModel()
{
this.prop1 = ko.observable(123);
this.prop2 = ko.observable("Hello");
..
..
}
myViewModel.prototype.func1 = function() {
//do something...
};
myViewModel.prototype.func2 = function() {
//do something...
};
和其他视图模型:
function otherViewModel()
{
this.propA = ko.observable(456);
this.propB = ko.observable("Goodbye");
..
..
}
otherViewModel.prototype.funcA = function() {
//do something...
};
otherViewModel.prototype.funcB = function() {
//do something...
};
otherViewModel的可观察性控制某些常见功能,如弹出窗口和掩码。是否有任何方法可以在myViewModel中实例化otherViewModel并设置这些属性?
或者有什么方法可以在全球范围内获取和设置它们吗?
请谨慎行事,因为我对这种模式还很陌生。非常感谢。
我同意使用作用域的注释,但有几种快速而肮脏的方法。。。
当你实例化myViewModel时——你可以在窗口上实例化它——然后直接引用
window.myViewInstance = new myViewModel()
function myOtherViewModel () {
this.propA = myViewInstance.xyz
}
当我有一些提供全局功能的东西要在其他地方使用时,我会使用这种方法。这就是jQuery和ko所做的…将$和ko绑定到窗口。
如果myViewModel.xyz=ko.obstatible(),那么在没有parens的情况下传递它会将其作为可观察对象传递——这将随着其值的变化而变化。使用parens将在评估结果时传递结果。
或者,您可以使用类似的ko.dataFor来引用它。
myViewModel () {...}
instance = new myViewModel
ko.applyBindings(instance, $('div')[0])
// this applies bindings of myViewModel to the first div on the page only
myOtherViewModel () {
this.propA = ko.dataFor($('div')[0])
// passes the entire object
this.propB = ko.dataFor($('div')[0]).xyz
// gives you just one property
}
这将使您的对象仅限于页面的一部分
相关文章:
- knockoutjs可观察数组
- 使用KnockoutJS和单个AJAX调用进行无限滚动
- 从 KnockoutJS 视图模型中获取值,然后在另一个视图模型上调用它
- KnockoutJS 绑定来自 AJAX 调用的对象列表
- KNOCKOUTJS - 嵌套在模板中的自定义绑定,ATTR 尚未在自定义绑定调用中绑定
- 无法在 Knockoutjs 中调用键下方法的 texbox 中键入文本
- 用自调用函数声明KnockoutJS模型有什么区别
- 在视图模型之间调用(KnockOutJS)
- knockoutjs调用一直在执行,怎么能只调用一次呢
- ajax调用期间的KnockoutJS竞赛条件
- AJAX调用后的Attr绑定(knockoutjs)
- knockoutjs从根视图模型调用子视图模型中定义的函数
- 如何使用asp.net mvc和knockoutjs构建对javascript函数的动态调用
- 在knockoutjs中调用主页面的组件
- KnockoutJs -为什么init绑定处理器只被调用一次
- 如何在KnockoutJS中的ajax调用后更新数组中的特定元素
- 我可以在Knockoutjs中的if绑定中访问jquery调用中的$data吗?
- KnockoutJS自定义绑定,在绑定期间调用click事件,而不是在单击时调用
- Knockoutjs:从子组件调用父组件的函数
- 从未调用过 KnockoutJS 单击绑定