2015-09-15 2 views
2

Я выполняю ионное приложение, которое использует угловые-js. Используя ng-repeat, я заполняю результаты. Я хотел бы отображать разные цвета на основе разных критериев.Ng-Style: невозможно передать данные контроллеру

мне удалось сделать только один критерий, используя кодирование нг-стиль инлайн следующим образом:

<table ng-style="{color:(test.Status == 'Cleared')?'green' : 'red'}"> 

Он отлично работает, но если я хочу установить несколько критериев, как время и т.д., то встроенный не будет жизнеспособным вариантом.

Таким образом, я попытался сменить это на контроллер.

<ion-list> 
    <ion-item ng-repeat="test in tests" class ="item-text-wrap" style="height:40%"> 

    <a href="#/tab/test/test-detail/{{test.ID}}"> 
    <div style="width:80%; float:left;"> 

    <table> 
    <span ng-style="calculateStyle(test)"> 
    <tr> 
     <td> <strong>Remark: </strong></td> 
     <td style="padding:3px">{{test.Remark}}</td> 
    </tr> 
    <tr> 
     <td><strong>Status:</strong></td> 
     <td style="padding:3px">{{test.Status}}</td> 
    </tr> 
     </span> 
    </table> 

</div> 
</a> 
</ion-item> 
</ion-list> 

В моем классе контроллера

.controller('Ctrl', function($scope, $http, $cordovaSQLite, dataFactory, StoreService) { 
.... 
    $scope.calculateStyle = function(test) { 
     var style={} 
     if (test.Status == 'Cleared') { 
     style.color='green'; 
     console.log('Viola'); 
    } 
    else{ 
     console.log('GG'); 
    } 
     return style; 
    } 

Примечание: тесты это данные в формате JSON, извлеченные из веба-сервиса, который имеет множество объектов. Таким образом, потребность в ng-repeat и я пытаюсь получить каждое значение test.Status для цветового кодирования.

По некоторым причинам я не знаю, почему, он бросает мне ошибку

Uncaught SyntaxError: Unexpected token test

на

$scope.calculateStyle = function(test) 

я могу передать целое число или строку через через calculateStyle («Test») или calculateStyle (123), он отлично работает. Просто этот «случай» имеет проблемы.

Я попытался заменить его на «$ scope», но все равно ничего не получилось. В чем может быть проблема?

Спасибо!

+0

можете ли вы скомпоновать журнал 'test' внутри' calculateStyle'? – kdlcruz

+0

вам нужно вернуть объект, например '{'color': 'green'}' вы можете дважды проверить, что именно вы возвращаетесь. Также попробуйте выполнить пробный тест и убедитесь, что вы его передаете. – ajmajmajma

+0

Привет, извините, я слишком много отлаживал и забыл, что ошибка не определена для области. Этот оригинальный код возвращает мне unsached syntaxError. – Gene

ответ

1

Использование

<table ng-init="sloppy = case" ng-style="calculateStyle(sloppy)"> 

делает трюк.

+0

Привет, я все закрыл, но я не ввел его. Сейчас я редактирую. – Gene

+0

@AnikIslamAbhi, если есть неотображенный синтаксис, тогда весь вид и веб-приложение белые, неспособные ничего увидеть. – Gene

+0

Прежде чем вы посмотрите дальше, не могли бы вы попробовать перейти на 'ng-href'?Это важно –

Смежные вопросы