第一次加载时,动作在Kendo标签条中被调用两次

时间:2014-11-01 13:05:57

标签: kendo-ui kendo-tabstrip

我正在使用kendo Tabstrips,我正面临加载标签的问题

Html.Kendo().TabStrip().Name("TabStrip")
           //.Animation(e=> e.Open(open => open.Fade(FadeDirection.In)))
           //.Events(e => e.Select("OnSelect")
           //.ContentLoad("ContentTabStripLoad")
           //.Activate("Tabstrip_select")
           //)

           .Items(parent =>
           {
               parent.Add().Text("Sales").Selected(true)
                   .LoadContentFrom("_SalesItems", "DataTile", new { isEditingState = @Model.IsEditingState, dataSetID = @Model.DataSet.ID });
               if (Model.EnableMixes == true)
               {
                   parent.Add()
                       .Text("Sales of structural mixes")
                       //.Enabled(@Model.EnableMixes)
                       .LoadContentFrom("_SalesOfMixesItems", "DataTile", new { isEditingState = @Model.IsEditingState, dataSetID = @Model.DataSet.ID });
                   //.Selected(@Model.TabNameToSelect == "Sales of structural mixes" ? true : false);
               }

               parent.Add()
                   .Text("Customer/market costs")
                   .Enabled(@Model.EnableCommercialCosts)
                   .LoadContentFrom("_CustomerCosts", "DataTile", new { isEditingState = @Model.IsEditingState, dataSetID = @Model.DataSet.ID });
               //.Selected(@Model.TabNameToSelect == "Customer/market costs" ? true : false);

               if (Model.EnableMixes == true)
               {
                   parent.Add()
                       .Text("Product mixes")
                       .Enabled(@Model.EnableMixes)
                       .LoadContentFrom("_ProductMixProducts", "DataTile", new { isEditingState = @Model.IsEditingState, dataSetID = @Model.DataSet.ID });
                   //.Selected(@Model.TabNameToSelect == "Product mixes" ? true : false);
               }

               if (Model.EnableCustomDriverItems == true)
               {
                   parent.Add()
                       .Text("Custom driver items")
                       .Enabled(@Model.EnableCustomDriverItems)
                       .LoadContentFrom("_CustomDriverItems", "DataTile", new { isEditingState = @Model.IsEditingState, dataSetID = @Model.DataSet.ID });
                   //.Selected(@Model.TabNameToSelect == "Custom driver items" ? true : false);
               }
           })
       .Render();

我已经使用select选项来选择默认选项卡并且它的工作正常然后如果我点击其他选项卡然后基础操作被触发两次我无法阻止它而且我不知道为什么它被调用两次。我已经写了以下几行来阻止它第二次射击但没有用。在单击选项卡时,正在调用相应的操作,然后我在下面的代码中调试调试器,然后再次调用该操作。

tabStrip.tabGroup.on('click', 'li', function (e) {
            debugger;
            return false;
        });

是否有任何解决方法

1 个答案:

答案 0 :(得分:1)

之前我曾经发生这种情况,这是因为我在处理某些标签点击的功能中创建了整个标签的额外副本。每次单击处理程序运行时,都会创建一个新副本,该副本将对应于在第一次单击任何卸载的选项卡时调用操作的次数。

糟糕,代码不好:

var tabStrip = $('#tabstripTemplate').kendoTabStrip().data("kendoTabStrip");

已修复,只需参考现有的标签页:

var tabStrip = $('#tabstripTemplate').data("kendoTabStrip");