Javascript 将数据传递给KnockoutJS中的可观察对象时出现问题
我正在我的knockout项目中设置一个模板系统,目标是能够随时调用函数loadTemplate(“templateName”),将新模板加载到视图中 我有一个版本可以使用,我可以调用Javascript 将数据传递给KnockoutJS中的可观察对象时出现问题,javascript,knockout.js,Javascript,Knockout.js,我正在我的knockout项目中设置一个模板系统,目标是能够随时调用函数loadTemplate(“templateName”),将新模板加载到视图中 我有一个版本可以使用,我可以调用loadHomeTemplate()或loadSearchTemplate(),它会工作的 但现在我正试图修改它,以便调用loadTemplate(“主页”)或loadTemplate(“搜索”) 由于某种原因,第二个版本在this.name=ko.observable(name)上中断。this.name未定
loadHomeTemplate()
或loadSearchTemplate()
,它会工作的
但现在我正试图修改它,以便调用loadTemplate(“主页”)
或loadTemplate(“搜索”)
由于某种原因,第二个版本在this.name=ko.observable(name)上中断代码>。this.name未定义-我添加了控制台日志以查看错误。我不明白。在这两种情况下,我似乎都在向buildTemplate的“name”参数传递相同的内容。没有
注意:我像那样绑定到“template content”元素,因为我正在运行多个视图模型。我将loadTemplate
或loadHomeTemplate
声明为globals,因为我需要能够随时运行这些方法。可能有更好的方法,但我还没有弄明白。主要问题是buildTemplate
必须与new
一起使用,因为它将自己初始化为所选模板的持有者。此修复程序解决了对name
的不正确访问
self.currentTemplate(new buildTemplate(name, templateData));
在我的fork中,我还创建了templateFactory
对象,该对象包含所有特定模板的内部构造函数。它使寻找合适的构造函数变得简单而自信
主要问题是buildTemplate
必须与new
一起使用,因为它将自身初始化为所选模板的持有者。此修复程序解决了对name
的不正确访问
self.currentTemplate(new buildTemplate(name, templateData));
在我的fork中,我还创建了templateFactory
对象,该对象包含所有特定模板的内部构造函数。它使寻找合适的构造函数变得简单而自信
对。我不敢相信我错过了“新”的声明。我也喜欢模板工厂的想法。好球!谢谢,好的。我不敢相信我错过了“新”的声明。我也喜欢模板工厂的想法。好球!非常感谢。