我有一个Web应用程序,可以包含许多选项卡(使用Bootstrap Pills和Tabs)。 用户单击命令(从命令菜单)或当用户单击现有选项卡中的实体(想象显示记录列表的选项卡,以及单击特定记录时)添加选项卡创建新选项卡,显示记录中的所有字段。
通过单击相应药丸右侧的小“X”关闭现有标签。
除了一件我无法找到可行解决方案的事情之外,这项工作顺利进行:
创建新标签后,用户必须点击“药丸”才能显示相应标签。
我已经设置了一个机制,使得Tab的控制器在其初始化结束时发出一个事件,该事件由同一个控制器接收,而不是处理Tabs创建(到目前为止,很好)。
在事件处理程序中,我尝试了几个选项 ACTIVATE 新选项卡但没有成功。所有选项都可以正确执行,但没有任何反应。
我尝试过的一些事情:
angular.element(domElement).triggerHandler('click');
,
this帖子中提出的解决方案,
...
如前所述,它们都没有错误地完成,但没有一个可以解决问题。
任何建议都将受到高度赞赏(特别是如果它能够完成这项工作)。
修改:
以下是一些描述应用相关部分的代码:
HTML药丸和标签:
<!-- Pills... -->
<li ng-repeat="One_Tab in Running_Tabs" id="Pill_{{One_Tab.Tab_ID}}">
<a href="#{{One_Tab.Page_Type}}_{{One_Tab.Instance}}" data-toggle="tab"><b>{{One_Tab.Title}} ({{One_Tab.Instance}})</b>
<i class="glyphicon glyphicon-remove pull-right"
style="display:block;float:right;cursor:pointer;background:red;color:white;margin:5px 0 0 10px;top:-5px;border:solid 4px red;border-radius:11px"
ng-click="Close_Tab(One_Tab.Tab_ID)"></i>
</a>
</li>
</ul>
<!-- Tabs... -->
<div class="tab-content clearfix">
<div class="tab-pane" ng-repeat="One_Tab in Running_Tabs" id="{{One_Tab.Page_Type}}_{{One_Tab.Instance}}" ng-include="Build_Page_Refrerence(One_Tab.Page_Type)">
</div>
</div>
新标签控制器中的事件排放:
$rootScope.$emit("Activate_Me",$scope.Tab_Forward_Info.Pill_Name) ;
接待活动:
$rootScope.$on('Activate_Me', function (event, Pill_Name) {
console.log("Request received from new tab to become active: " + Pill_Name) ;
$("#Pill_Name").click() ;
}) ;
注意:Pill_Name
带有需要模拟点击的元素的名称。
提交(触发)事件,由上面的代码接收,并使用正确的元素名称。
答案 0 :(得分:-2)
如果可能的话,使用addclass
$( "#Pill_Name" ).addClass("class");
我没有其他解决方案抱歉
并且您可以使用.removeclass("class")
更改标签