Javascript 具有相同名称和不同templateUrl的淘汰模板
我有以下问题 我有两个同名的模板,它们构成了同一模板的可编辑和只读变体 在我的html中有两个不同的位置(动态创建,但正是这种情况给了我问题),我使用模板绑定,我想绑定到其中的每一个 第一个将如下所示:Javascript 具有相同名称和不同templateUrl的淘汰模板,javascript,templates,knockout.js,Javascript,Templates,Knockout.js,我有以下问题 我有两个同名的模板,它们构成了同一模板的可编辑和只读变体 在我的html中有两个不同的位置(动态创建,但正是这种情况给了我问题),我使用模板绑定,我想绑定到其中的每一个 第一个将如下所示: <div data-bind="template: {name: 'myTemplate', data: $data, templateUrl: '/Templates/readonly/' }"></div> 第二个看起来像这样 <div data-bind
<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将重用第一个模板,因为它具有相同的名称,这将使两个模板都是只读的
那么,如果第二个模板位于另一个模板所在的另一个位置,有没有办法让knockout下载第二个模板,或者没有办法在所有模板上都有唯一的名称
根据目前的逻辑,要改变这一点需要做很多工作,所以我希望可以通过绑定而不是重命名来完成
编辑
我正在使用找到的外部模板引擎。似乎只要名称是唯一的,它就会再次获取它(即使这会导致相同的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让我走上了正确的轨道 你在用这个吗@pax162-是的,我是。也应该在问题中写上。将立即更新。如果您可以更改viewModel并删除myTemplate周围的引号,那么一个快速修复方法就是使用返回不同名称的函数替换myTemplate。