我有一個嵌套在ng-repeat中的指令。 ng-repeat項目被傳遞給指令。我試圖根據傳遞給指令的項中的鍵/值生成指令模板(用於測試)或帶有可變元素的templateUrl。基本上,如果item.number> 50使按鈕紅色,否則使它藍色。根據示波器數據更改指令模板中的元素
我可能會使用錯誤的工具來解決問題。目標是使用這樣的東西來改變Bootstrap標籤。例如邏輯:
if item.number > 50:
class="btn btn-danger"
else:
class="btn btn-success"
如果可能的話我想用templateUrl來解決這個問題:因爲我想的按鈕啓動自舉模式,這是一個很多適應的基本模板選項。傳遞模板各個作用域變量會更簡潔。
這是試圖描述問題的JSFiddle。
HTML
<div ng-controller="TableCtrl">
<table>
<thead>
<tr>
<th>#</th>
<th>Button</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="item in buttons">
<td>{{item.id}}</td>
<td new-button item='item'></td>
</tr>
</tbody>
</table>
</div>
app.js
var myApp = angular.module('myApp', []);
function TableCtrl($scope) {
$scope.buttons = {
button1: {
id: 1,
number: '10',
},
button2: {
id: 2,
munber: '85',
}
};
};
myApp.directive('newButton', function() {
return {
restrict: 'A',
replace: true,
scope: {
item: '=',
},
link: function(elem, attrs, scope) {
// This is most likely not the right location for this
/*if (item.number > 50) {
button.color = red
}, else {
button.color = blue
}; */
},
template: '<td><button type="button">{{button.color}}</button></td>'
}
});
你是正確的,NG級工程類部分。我的後續問題是當使用Angular UI Boostrap進度條時,他們將顏色移出類,並使其成爲自己的type =「」元素。有沒有辦法用他們的自定義元素來做類似的邏輯? uib-progressbar> –
davidcapatch
' 50?'btn-danger' :'btn-success'}}「> uib-progressbar>' –
bcherny
這就行了!在錯過小/簡單的事情的文檔中迷失方向。非常感謝你。 – davidcapatch