具有相同名称和不同templateUrl的Knockout模板

时间:2013-10-25 11:16:46

标签: javascript templates knockout.js

我有以下问题。

我有两个名称相同的模板,构成同一模板的可编辑和只读变体。

我的html中的两个不同的地方(动态创建,但是这个条件给我带来了问题)我使用模板绑定,我想绑定到其中的每一个。

第一个将如下所示:

<div data-bind="template: {name: 'myTemplate', data: $data, templateUrl: '/Templates/readonly/' }"></div>

第二个看起来像这个

<div data-bind="template: {name: 'myTemplate', data: $data, templateUrl: '/Templates/editable/' }"></div>

问题在于,当我进入第二个模板绑定时,knockout将重用第一个模板,因为它具有相同的名称,这将使两个模板只读。

所以有没有办法让淘汰赛下载第二个模板,如果它位于另一个模板的另一个位置,或者没有办法在所有模板上都有唯一的名称。

鉴于当前的逻辑,改变它将需要做很多工作,因此我希望它可以通过绑定而不是重命名来完成。

修改

我正在使用找到here的外部模板引擎。

1 个答案:

答案 0 :(得分:0)

似乎只要名称是唯一的,它就会再次获取它(即使这会产生相同的网址。

所以将它们改为

<div data-bind="template: {name: 'readonly/myTemplate', data: $data, templateUrl: '/Templates/' }"></div>

<div data-bind="template: {name: 'editable/myTemplate', data: $data, templateUrl: '/Templates/' }"></div>

让它按照我的希望工作,服务器端没有任何变化:)

感谢@ pax162让我走上了正确的轨道!