我刚刚开始关注淘汰赛组件。
我正在尝试执行以下操作。
来自主模块
var setup = {color:"pink"};
ko.components.register('headerbar', {require:"/headerbar"});
组件
define(["ko", "text!./headerbar.html"], function(ko, html) {
"use strict";
var vm = function(prms){
//use passed setup info here
};
return { viewModel: vm, template: html };
});
我希望能够做到这一点,所以我可以传递一些设置细节,而不必通过其参数在组件的每个实例中表达它们
答案 0 :(得分:0)
这就是我最终的目标。
var ctxPassingLoader = {
to_pass: {
},
loadComponent:function(name, cfg, callback){
if(cfg.ctx){
this.to_pass[name] = cfg.ctx;
}
app.ko.components.defaultLoader.loadComponent(name, cfg, callback);
},
loadViewModel: function(name, original, callback) {
var ctx = this.to_pass[name] || original.ctx;
this.to_pass[name] = null;
if (ctx) {
var wrapper;
if(original.createViewModel){
wrapper = {
createViewModel : function(params, info){
original.createViewModel(params, info, ctx);
}
};
}else{
wrapper = function(params){
return original(params, ctx);
};
}
app.ko.components.defaultLoader.loadViewModel(name, wrapper, callback);
} else {
callback(null);
}
}
};
app.ko.components.loaders.unshift(ctxPassingLoader);
调用代码
var setup = {color:"pink"};
ko.components.register('headerbar', {require:"/headerbar", ctx:setup});