2013-09-20 5 views
2

Я пытаюсь показать некоторые div s (которые под 3+ ng-repeat s) условно, а затем увеличивать счетную переменную, которая. Счетчик вносит вклад в условия, определяющие видимость div.Увеличение внутри углового выражения

Когда я сделать что-то похожее на ng-show='foo++ < SOME_LIMIT' я получаю ошибку синтаксиса:

Error: Syntax Error: Token 'undefined' not a primary expression at column NaN of the expression [moveItem.type != 'account' && team.rowCount++] starting at [moveItem.type != 'account' && team.rowCount++]. 

или

Error: Syntax Error: Token '2' is an unexpected token at column 42 of the expression [team.expandAccounts || team.rowCount++ < 2] starting at [2] 

Предоставление кода, кажется, не требуется, но все-таки я даю то, что я был пробовать. я пытался что-то похожее на:

<div ng-repeat='request in pagedRequests' 
    <tr ng-repeat='(fooId, foo) in returnFoos(request)'> 
    <td ng-init='foo.rowCount = 0'> 
     {{foo.someAttribute}} 
     <!--Here is just an icon shown when the rowCount reaches some limit, say 3. 
      Uses ng-switch on foo.rowCount. Skipping this as this doesn't seem 
      problematic. This toggles rows' collapsing using foo.expandRows.--> 
     <div ng-repeat='bar in foo.bars' 
      ng-show='foo.rowCount < 3 || foo.expandRows'> 
     <span ng-show='bar.type=="multiRowBar"' 
       ng-repeat='row in bar.rows'> 
      <span ng-show="foo.expandRows || foo.rowCount++ < 3"> <!--SYNTAX ERROR!--> 
      <!--Showing the nested objects with more ng-repeats.--> 
     </span> 
     <span ng-show='bar.type!="multiRowBar" && foo.rowCount++<3'> <!--SYNTAX ERROR!--> 
      <!-- This adds a single row per bar of this type.--> 
     </span> 
     </div> 
    </td> 
    </tr> 
</div> 

ли это, что мы не можем использовать пост/предварительные операторы инкремента/декремента (как ++) внутри угловых выражений?

+0

Не могли бы вы использовать объект $ index, который вы получаете, когда используете ng-repeat? – Dan

+0

@dskh: да, что будет включать '$ parent. $ Index + $ index <3'. Я просто пытаюсь избежать «$ parent» в шаблоне. – 0xc0de

+0

Иконка, которая зависит от 'rowCount', сложна, так как она будет зависеть от индекса ребенка. – 0xc0de

ответ

0

Вопроса немного невежествен в том, что такое усилие вызывает циклические $digest вызов, нарушающие. (Просто ради того, чтобы сделать какой-то смысл из этого вопроса, я даю свое решение. Надеюсь, что это поможет кому-то попробовать этот материал). Решение, которое я завершил, включает в себя сглаживание всех списков в один список и switch ing, чтобы показать значок для конкретное значение $index.

1

Почему просто не использовать метод, как:

<button ng-show='increaseFoo() < SOME_LIMIT'>press me</button> 

контроллер

$scope.SOME_LIMIT = 10;  
$scope.foo = 8; 

$scope.increaseFoo = function(){ 
    return $scope.foo++; 
};  

Fiddle

если $scope.foo = 8;, ng-show возвращается true

если $scope.foo = 9;, ng-show возвращает false

+0

@Downvoter, в чем проблема с этим ответом? пожалуйста, объясните –

+0

Увидев это через долгое время, просто хочу, чтобы я понял, что я не являюсь нисходящим (может показаться, что я сам ответил на мой вопрос). – 0xc0de

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