Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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 具有相同名称和不同templateUrl的淘汰模板_Javascript_Templates_Knockout.js - Fatal编程技术网

Javascript 具有相同名称和不同templateUrl的淘汰模板

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

我有以下问题

我有两个同名的模板,它们构成了同一模板的可编辑和只读变体

在我的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将重用第一个模板,因为它具有相同的名称,这将使两个模板都是只读的

那么,如果第二个模板位于另一个模板所在的另一个位置,有没有办法让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。