2016-10-21 12 views
0

В angularjs Ui сетки, у меня есть шаблон ячейки, как показано ниже:шаблона пользовательского интерфейса ячейки необходим динамический стиль нг

cellTemplate : "<div class="progress"> <div class="progress-bar progress-bar-info" ></div> </div>" 

Теперь мне нужно динамически изменять класс цвета для CellTemplate то, progress-bar-info. Значение столбца (полное, неполное, незавершенное или неудачное). Мне нужно иметь progress-bar-success, progress-bar-info, progress-bar-warning, progress-bar-danger в cellTemplate. Как мы можем достичь этого?

Я попытался следующий шаблон, но он дает ошибку:

cellTemplate: " <div class=\"progress margin-top-10\"> <div class=\"progress-bar\" ng-class=\"{progress-bar-success:{{row.entity.status}}==='complete', progress-bar-warning:{{row.entity.status}}==='incomplete', progress-bar-danger:{{row.entity.status}}==='fail'}\" ng-style=\"{width:'{{row.entity.val}}%'}\"></div> </div>", 

И ошибка выглядит следующим образом:

angular.js:13920 Error: [$parse:syntax] Syntax Error: Token '-' is unexpected, expecting [}] at column 10 of the expression [{progress-bar-success:complete==='complete', progress-bar-warning:complete==='incomplete', progress-bar-danger:complete==='fail'}] starting at [-bar-success:complete==='complete', progress-bar-warning:complete==='incomplete', progress-bar-danger:complete==='fail'}]. 

ответ

2

Вы можете использовать нг-класс нг-класс = "{class1: ВЫРАЖЕНИЕ1, class2: выражение2}"

В вашем случае что-то вроде этого

<div class="progress-bar" 
    ng-class="{'progress-bar-success':row.entity.status==='complete', 'progress-bar-warning':row.entity.status==='incomplete', 'progress-bar-danger':row.entity.status==='fail'}"> 
</div> 

Вот плункер. https://plnkr.co/edit/ydY6eTFE7PbJ4j8VcM0g?p=preview

+0

Ошибка, которую вы получаете, связана с дефисом в имени класса. Вы можете обернуть их внутри ''. – Rishabh

+0

Я пробовал это с «успехом-баром-успехом», но все же он не работает – smart987

+0

Какая ошибка вы получаете? Проверьте ссылку plunker – Rishabh

0

Добавить это в вас контроллер;

var myApp = angular.module('myApp'); 

myApp.controller('clickCtrl', function($scope){ 

    $scope.dynamicClass = "progress"; 

}); 

На ваш взгляд:

cellTemplate : "<div ng-class="dynamicClass"> <div class="progress-bar progress-bar-info" ></div> </div>" 

Определение CSS:

.progress{ 
    background-color: orange !important; 
} 


.done{ 
    background-color: green!important; 
} 
+0

Он не хочет использовать свои собственные классы css, но для остальных это правильно –

+0

В

, я хочу, чтобы информация о ходе выполнения была изменена динамически, это может быть прогресс-бар-информация или предупреждение о прогрессе , и т. д. в зависимости от значения ячейки. Можно ли это сделать? – smart987

+0

Из этого фрагмента кода он может все и поиграть. – Jigar7521

0

В случае, если вы хотите использовать свои собственные стили, просто убедитесь, что вы не определяете их как «.ui-grid-cell-contents». Это фактически работает для rowTemplate, но не для cellTemplate. Я видел несколько сообщений об этом, и это могло бы сэкономить вам некоторую проблему.