2013-10-25 109 views
0

我遇到以下问题。具有相同名称和不同模板的淘汰赛模板URr

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

在我的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> 

的问题是,当我到达第二个模板结合,淘汰赛将重用第一个模板,因为它具有相同的名称,并且会使这两个模板只读。

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

鉴于目前的逻辑,改变这一点将会有很多工作,所以我希望可以通过绑定而不是重命名来完成。

编辑

我使用的外部模板引擎发现here

+0

你用这个吗? https://github.com/ifandelse/Knockout.js-External-Template-Engine – pax162

+0

@ pax162 - 是的。应该在问题中写下这个问题。现在就更新它。 –

+0

如果您可以更改您的viewModel并摆脱myTemplate周围的引号,快速修复将实际上用一个返回不同名称的函数替换myTemplate。 http://knockoutjs.com/documentation/template-binding.html#note_5_dynamically_choosing_which_template_is_used – pax162

回答

0

看来,只要名称是唯一的,将再次读取它(即使这会导致相同的URL。

所以他们更改为

<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让我走上了正确的轨道!