在创建模块时将订阅初始化为 ko.subscrepable
Initialize subscriptions to ko.subscribable at module creation
我有使用揭示模块模式实现的视图模型。我正在使用全局敲除订阅来实现这些之间的数据解耦传递。我现在正在做的是在主视图模型中创建一个视图模型的实例:
NameSpace.MasterViewModel = function(){
var viewModel = new viewModel(),
initSubscription = function(){
viewModel.initSubscription();
};
return {
initSubscription: initSubscription
}
}
并在 ViewModel 中初始化订阅,如下所示:
NameSpace.ViewModel = function(){
var data,
initSubscription = function(){
ko.postbox.subscribe( "New Data"function(newData){
this.data = newData;
}, this);
};
return {
data: data,
initSubscription: initSubscription
}
}
这有效,但我想知道是否有办法在创建 ViewModel 时初始化订阅?这样我就可以避免公共初始化函数。
有没有办法在创建视图模型时初始化订阅?
为什么确定。只需在声明您显示的模块和返回它之间订阅:
NameSpace.ViewModel = function(){
var data;
var self = this;
var initSubscription = function(){
NameSpace.Postbox.subscribe(function(newData){
self.data = newData;
}, this, "New Data");
};
initSubscription(); // <-- does exactly what you ask
return {
data: data,
initSubscription: initSubscription // <-- might be superfluous now
}
}
相关文章:
- 使用javascript函数在页面初始化后加载jquery
- 未捕获错误:无法在初始化之前调用方法;
- 如何在剑道网格初始化后设置pageSizes
- React redux初始化功能,无论状态变化如何
- 为什么可以't Protractor在自动初始化的Angular网站上查找Angular
- 尝试初始化()Spine's控制器和故障
- Angular.js延迟控制器初始化
- 对插件初始化后动态加载的元素进行样式设置
- Angular JS控制器初始化错误
- 在XMLHttpRequest之后重新初始化jQuery
- ember-js组件初始化不同的函数
- Youtube JavaScript API不是't正在初始化
- 函数无法识别初始化的变量
- datepicker引导程序再次初始化
- jquery数据表在初始化时设置宽度
- 如何使用app和secret进行安全的解析初始化
- 从javascript中再次初始化c变量
- ng重复中的ng模型-初始化唯一作用域属性
- 正在Ajax调用上初始化主干视图
- 用真或假初始化变量是否在 Javascript 中建立了内容的方向