Angular-ui-bootstrap -- 无法在 ng-repeat 中禁用标签
Angular-ui-bootstrap -- unable to disable tabs inside ng-repeat
所有。
我正在使用 angular 和 ui-bootstrap 创建一个选项卡菜单,(希望)用户可以在该菜单上 enable/disable 他们不需要的选项卡.我试图非常严格地遵守模板代码,并实现了我自己的功能来禁用单击时的选项卡,但我无法让我的选项卡以与示例中相同的方式响应。我一直在阅读并猜测它与 ng-repeat 创建自己的范围有关,但我还没有解决它。任何帮助将不胜感激!
我已尝试在 this plunker 中展示我正在处理的内容。
相关控制器代码:
$scope.theirTabs = [
{ title:'Dynamic Title 1', content:'Dynamic content 1' },
{ title:'Dynamic Title 2', content:'Dynamic content 2', disabled: true }
];
$scope.myTabs = [
{ title:'Orders',
content: {
description: 'DESCRIPTION',
poNumber: 'PO_NUMBER',
origFacility: 'ORIGIN_FACILITY',
destName: 'D_NAME',
destCity: 'D_CITY' ,
transitType: 'TRAN_TYPE',
transitCode: 'TRAN_CODE'
},
disabled: false
},
{ title:'Inventory',
content: {
createdDateTime: 'CREATED_DATE_TIME',
userName: 'USER_NAME'
},
disabled: false
},
{ title:'Items',
content: {
allocatedQty: 'ALLOCATED_QTY',
unitsPacked: 'UNITS_PAKD',
shippedQty: 'SHIPPED_QTY'
},
disabled: false
},
{ title:'Activity',
content: {
orderNumber: 'ORDER_NUMBER',
poNumber: 'PO_NUMBER',
origFacility: 'ORIGIN_FACILITY'
},
disabled: true
}
];
$scope.disableTab = function(tab, index) {
tab.disabled = true;
console.log('tab at index ' + index + ' should be disabled');
};
相关html(这里只包括我的):
<div class="row">
<div ng-repeat="tab in myTabs track by $index" class="select-tables-checkboxes col-md-3">
<!-- <label for="select-tables">{{tab.title}}</label> -->
<button type="button"
name="select-tables"
id="select-tables"
ng-click="myTabs[$index].disabled = ! myTabs[$index].disabled">Enable / Disable {{tab.title}}
<!-- also tried ng-click="disableTab(tab, $index)" -->
</div>
</div>
<tabset>
<tab ng-repeat="tab in myTabs" heading="{{tab.title}}" active="tab.active" ng-disabled="tab.disabled">
<!-- <div class="row" ng-repeat="(key, value) in content track by $index"></div> -->
<div class="row" ng-repeat="(k, v) in tab.content">
<div class="column-exists-checkbox col-md-1">
<input type="checkbox"
name="column-exists"
id="column-exists"
ng-model="columnExists">
</div>
<div class="column-description col-md-4">
<p class="column-description"><strong>{{k}}</strong></p>
</div>
<div class="column-name col-md-7">
<input type="text"
name="column-name"
id="column-name"
value="{{v}}">
</div>
</div>
<!-- </div> -->
</tab>
</tabset>
顺便说一句,当我 运行 我的代码并单击我自己的按钮到 disable/enable 选项卡时(我意识到我只编码为使用 $scope.disableTab 函数禁用),我得到正确的控制台输出,即 'tab at index 0 should be disabled' 当我点击订单按钮时,依此类推。
提前感谢您提出任何建议!
对于 tab 指令,您应该使用 disable
属性
<tab ng-repeat="tab in myTabs" heading="{{tab.title}}" active="tab.active" disable="tab.disabled">
所有。
我正在使用 angular 和 ui-bootstrap 创建一个选项卡菜单,(希望)用户可以在该菜单上 enable/disable 他们不需要的选项卡.我试图非常严格地遵守模板代码,并实现了我自己的功能来禁用单击时的选项卡,但我无法让我的选项卡以与示例中相同的方式响应。我一直在阅读并猜测它与 ng-repeat 创建自己的范围有关,但我还没有解决它。任何帮助将不胜感激!
我已尝试在 this plunker 中展示我正在处理的内容。
相关控制器代码:
$scope.theirTabs = [
{ title:'Dynamic Title 1', content:'Dynamic content 1' },
{ title:'Dynamic Title 2', content:'Dynamic content 2', disabled: true }
];
$scope.myTabs = [
{ title:'Orders',
content: {
description: 'DESCRIPTION',
poNumber: 'PO_NUMBER',
origFacility: 'ORIGIN_FACILITY',
destName: 'D_NAME',
destCity: 'D_CITY' ,
transitType: 'TRAN_TYPE',
transitCode: 'TRAN_CODE'
},
disabled: false
},
{ title:'Inventory',
content: {
createdDateTime: 'CREATED_DATE_TIME',
userName: 'USER_NAME'
},
disabled: false
},
{ title:'Items',
content: {
allocatedQty: 'ALLOCATED_QTY',
unitsPacked: 'UNITS_PAKD',
shippedQty: 'SHIPPED_QTY'
},
disabled: false
},
{ title:'Activity',
content: {
orderNumber: 'ORDER_NUMBER',
poNumber: 'PO_NUMBER',
origFacility: 'ORIGIN_FACILITY'
},
disabled: true
}
];
$scope.disableTab = function(tab, index) {
tab.disabled = true;
console.log('tab at index ' + index + ' should be disabled');
};
相关html(这里只包括我的):
<div class="row">
<div ng-repeat="tab in myTabs track by $index" class="select-tables-checkboxes col-md-3">
<!-- <label for="select-tables">{{tab.title}}</label> -->
<button type="button"
name="select-tables"
id="select-tables"
ng-click="myTabs[$index].disabled = ! myTabs[$index].disabled">Enable / Disable {{tab.title}}
<!-- also tried ng-click="disableTab(tab, $index)" -->
</div>
</div>
<tabset>
<tab ng-repeat="tab in myTabs" heading="{{tab.title}}" active="tab.active" ng-disabled="tab.disabled">
<!-- <div class="row" ng-repeat="(key, value) in content track by $index"></div> -->
<div class="row" ng-repeat="(k, v) in tab.content">
<div class="column-exists-checkbox col-md-1">
<input type="checkbox"
name="column-exists"
id="column-exists"
ng-model="columnExists">
</div>
<div class="column-description col-md-4">
<p class="column-description"><strong>{{k}}</strong></p>
</div>
<div class="column-name col-md-7">
<input type="text"
name="column-name"
id="column-name"
value="{{v}}">
</div>
</div>
<!-- </div> -->
</tab>
</tabset>
顺便说一句,当我 运行 我的代码并单击我自己的按钮到 disable/enable 选项卡时(我意识到我只编码为使用 $scope.disableTab 函数禁用),我得到正确的控制台输出,即 'tab at index 0 should be disabled' 当我点击订单按钮时,依此类推。
提前感谢您提出任何建议!
对于 tab 指令,您应该使用 disable
属性
<tab ng-repeat="tab in myTabs" heading="{{tab.title}}" active="tab.active" disable="tab.disabled">