angular 中的下拉菜单和选项卡问题
Issue with drop down menu and tabs in angular
我在 angularjs 中使用 MDL 选项卡。 Tab 定义为:
<header class="mdl-layout__header">
<div class="mdl-layout__tab-bar mdl-js-ripple-effect">
<a ng-href="#fixed-tab-1" ng-click="activateTab('Assets')" class="mdl-layout__tab">Asset Protection</a>
<a ng-href="#fixed-tab-2" ng-click="activateTab('Copies')" class="mdl-layout__tab is-active">Asset Copies</a>
<a ng-href="#fixed-tab-3" ng-click="activateTab('Savings')" class="mdl-layout__tab">Asset Savings</a>
<div class="mdl-layout-spacer"></div>
</div>
</header>
选项卡 1 中的 table 是:
<tbody>
<tr ng-repeat="x in restdata | filter:search | orderBy:btn:reverse">
<td class="mdl-data-table__cell--non-numeric mdl-typography--thin">{{ x.asset }}</td>
<td class="mdl-data-table__cell--non-numeric">
<i id="ttadd01{{$index}}" class="material-icons icon-border md-15"
ng-click="tableAction(x.id)" ng-class="{ 'select600': x.actionselected}">
add
</i>
<div class="mdl-tooltip" for="ttadd01{{$index}}">Add</div>
<i id="menu-action01{{$index}}" ng-click="tableList(x.id)" class="material-icons icon-border md-15">more_vert</i>
<div ng-show=(x.selected)">
<ul class="mdl-menu mdl-menu--top-left mdl-js-menu mdl-js-ripple-effect" for="menu-action01{{$index}}">
<li ng-click="tableListAction($index)" class="mdl-menu__item"
ng-repeat="act01 in tableListActions">
<i class="material-icons md-15">{{ act01.icon }}</i>{{ act01.name }}
</li>
</ul>
</div>
<div class="mdl-tooltip" for="menu-action01{{$index}}">More Options</div>
</td>
</tr>
</tbody>
在第二个选项卡上,非常相似:
<tbody>
<tr ng-repeat="y in restdata | filter:search | orderBy:btn:reverse">
<td class="mdl-data-table__cell--non-numeric mdl-typography--thin">{{y.rental}}</td>
<td class="mdl-data-table__cell--non-numeric">
<i id="ttadd02{{$index}}" class="material-icons icon-border md-15"
ng-click="tableAction(y.id)" ng-class="{ 'select600': y.actionselected}">
add
</i>
<div class="mdl-tooltip" for="ttadd02{{$index}}">Add</div>
<i id="menu-action02{{$index}}" ng-click="tableList(y.id)" class="material-icons icon-border md-15">more_vert</i>
<div ng-show="(y.selected)">
<ul class="mdl-menu mdl-menu--top-left mdl-js-menu mdl-js-ripple-effect" for="menu-action02{{$index}}">
<li ng-click="tableListAction($index)" class="mdl-menu__item"
ng-repeat="act02 in tableListActions">
<i class="material-icons md-15">{{ act02.icon }}</i>{{ act02.name }}
</li>
</ul>
</div>
<div class="mdl-tooltip" for="menu-action02{{$index}}">More Options</div>
</td>
</tr>
</tbody>
对于这两个选项卡,数据是使用 REST 调用提取的(并正确显示)。未正确显示的是下拉菜单 menu-action01 和 02。在任何选项卡的第一个条目上都显示良好。在选项卡更改时,它停止显示。我已验证 .selected 在 javascript.
中设置正确
有什么想法吗?谢谢
能否请您在 this simple example 上验证您的情况,不使用样式和 REST 调用?
<div ng-show="(y.selected)">
<ul class="mdl-menu mdl-menu--top-left mdl-js-menu mdl-js-ripple-effect" for="menu-action02{{$index}}">
<li ng-click="tableListAction($index)" class="mdl-menu__item" ng-repeat="act02 in tableListActions">
<i class="material-icons md-15">{{ act02.icon }}</i>{{ act02.name }}
</li>
</ul>
</div>
JavaScript片段:
$scope.tableList = function(id){
angular.forEach($scope.restdata, function(value, key) {
value.selected = false;
});
$scope.restdata[id].selected = true;
};
我在 angularjs 中使用 MDL 选项卡。 Tab 定义为:
<header class="mdl-layout__header">
<div class="mdl-layout__tab-bar mdl-js-ripple-effect">
<a ng-href="#fixed-tab-1" ng-click="activateTab('Assets')" class="mdl-layout__tab">Asset Protection</a>
<a ng-href="#fixed-tab-2" ng-click="activateTab('Copies')" class="mdl-layout__tab is-active">Asset Copies</a>
<a ng-href="#fixed-tab-3" ng-click="activateTab('Savings')" class="mdl-layout__tab">Asset Savings</a>
<div class="mdl-layout-spacer"></div>
</div>
</header>
选项卡 1 中的 table 是:
<tbody>
<tr ng-repeat="x in restdata | filter:search | orderBy:btn:reverse">
<td class="mdl-data-table__cell--non-numeric mdl-typography--thin">{{ x.asset }}</td>
<td class="mdl-data-table__cell--non-numeric">
<i id="ttadd01{{$index}}" class="material-icons icon-border md-15"
ng-click="tableAction(x.id)" ng-class="{ 'select600': x.actionselected}">
add
</i>
<div class="mdl-tooltip" for="ttadd01{{$index}}">Add</div>
<i id="menu-action01{{$index}}" ng-click="tableList(x.id)" class="material-icons icon-border md-15">more_vert</i>
<div ng-show=(x.selected)">
<ul class="mdl-menu mdl-menu--top-left mdl-js-menu mdl-js-ripple-effect" for="menu-action01{{$index}}">
<li ng-click="tableListAction($index)" class="mdl-menu__item"
ng-repeat="act01 in tableListActions">
<i class="material-icons md-15">{{ act01.icon }}</i>{{ act01.name }}
</li>
</ul>
</div>
<div class="mdl-tooltip" for="menu-action01{{$index}}">More Options</div>
</td>
</tr>
</tbody>
在第二个选项卡上,非常相似:
<tbody>
<tr ng-repeat="y in restdata | filter:search | orderBy:btn:reverse">
<td class="mdl-data-table__cell--non-numeric mdl-typography--thin">{{y.rental}}</td>
<td class="mdl-data-table__cell--non-numeric">
<i id="ttadd02{{$index}}" class="material-icons icon-border md-15"
ng-click="tableAction(y.id)" ng-class="{ 'select600': y.actionselected}">
add
</i>
<div class="mdl-tooltip" for="ttadd02{{$index}}">Add</div>
<i id="menu-action02{{$index}}" ng-click="tableList(y.id)" class="material-icons icon-border md-15">more_vert</i>
<div ng-show="(y.selected)">
<ul class="mdl-menu mdl-menu--top-left mdl-js-menu mdl-js-ripple-effect" for="menu-action02{{$index}}">
<li ng-click="tableListAction($index)" class="mdl-menu__item"
ng-repeat="act02 in tableListActions">
<i class="material-icons md-15">{{ act02.icon }}</i>{{ act02.name }}
</li>
</ul>
</div>
<div class="mdl-tooltip" for="menu-action02{{$index}}">More Options</div>
</td>
</tr>
</tbody>
对于这两个选项卡,数据是使用 REST 调用提取的(并正确显示)。未正确显示的是下拉菜单 menu-action01 和 02。在任何选项卡的第一个条目上都显示良好。在选项卡更改时,它停止显示。我已验证 .selected 在 javascript.
中设置正确有什么想法吗?谢谢
能否请您在 this simple example 上验证您的情况,不使用样式和 REST 调用?
<div ng-show="(y.selected)">
<ul class="mdl-menu mdl-menu--top-left mdl-js-menu mdl-js-ripple-effect" for="menu-action02{{$index}}">
<li ng-click="tableListAction($index)" class="mdl-menu__item" ng-repeat="act02 in tableListActions">
<i class="material-icons md-15">{{ act02.icon }}</i>{{ act02.name }}
</li>
</ul>
</div>
JavaScript片段:
$scope.tableList = function(id){
angular.forEach($scope.restdata, function(value, key) {
value.selected = false;
});
$scope.restdata[id].selected = true;
};