0

我有一个 html 表,它正在做一些计算,后面有一些 jQuery/knockout.js。

我脑海中的原始大纲是将这个“内容”打包到一个模板中,并在加载事件中加载它的一个实例。该实例将位于窗口内的一个简单的选项卡式容器中。

当用户单击按钮时,应使用此模板的另一个实例创建第二个选项卡。

如何以最有效的方式做到这一点?特别是如何将我独特的 html/js 代码存储在可重用的模板中以进行实例化。

我正在想象一个看起来像这样的片段:

var tabCounter = 0;
var divID = "tabNr";

$("body").on("click","a.newTab",function(){
    tabCounter++; 
    var tabbedContent = $("<div class="tab" id="'" + divID + tabCounter + "'"></div>");
    tabbedContent.html('insert whole html block from template here which references the   knockout viewmodel --- how?');
    return false;
})

任何帮助表示赞赏

4

1 回答 1

0

我的方法是observableArray在您的视图模型中使用一个代表选项卡。此数组中的每个对象将代表每个选项卡中表的数据。

该数组可以从其中的一个元素开始,这将使您处于现在的情况。但如果只是向数组中添加一个元素,Knockout 可以呈现下一个选项卡所需的 html。

因此,您可以避免通过 jQuery 将 html 字符串插入 DOM,而这正是 Knockout 的初衷。

注意:如果您使用 JavaScript 框架来增强选项卡,您可能需要自定义绑定来调用 frameworks 方法。

于 2013-05-17T11:32:36.187 回答