2013-10-25 48 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讓我走上了正確的軌道!