Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将数据传递给KnockoutJS中的可观察对象时出现问题_Javascript_Knockout.js - Fatal编程技术网

Javascript 将数据传递给KnockoutJS中的可观察对象时出现问题

Javascript 将数据传递给KnockoutJS中的可观察对象时出现问题,javascript,knockout.js,Javascript,Knockout.js,我正在我的knockout项目中设置一个模板系统,目标是能够随时调用函数loadTemplate(“templateName”),将新模板加载到视图中 我有一个版本可以使用,我可以调用loadHomeTemplate()或loadSearchTemplate(),它会工作的 但现在我正试图修改它,以便调用loadTemplate(“主页”)或loadTemplate(“搜索”) 由于某种原因,第二个版本在this.name=ko.observable(name)上中断。this.name未定

我正在我的knockout项目中设置一个模板系统,目标是能够随时调用函数loadTemplate(“templateName”),将新模板加载到视图中

我有一个版本可以使用,我可以调用
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
对象,该对象包含所有特定模板的内部构造函数。它使寻找合适的构造函数变得简单而自信


对。我不敢相信我错过了“新”的声明。我也喜欢模板工厂的想法。好球!谢谢,好的。我不敢相信我错过了“新”的声明。我也喜欢模板工厂的想法。好球!非常感谢。