У меня есть переменная области действия с этой структурой:AngularJS: NgShow Оценка свойств объекта в коллекции
var $scope.messages = [
{
id: '1',
body: 'Foo',
status: 'read'
},
{
id: '2',
body: 'Bar',
status: 'read'
},
{
id: '3',
body: 'Hello',
status: 'unread'
},
{
id: '4',
body: 'World',
status: 'unread'
},
]
На макете HTML, я нг-шоу директива, как это:
<div class="loaderContainer" ng-show="isAnyNewMessage() > 0">
You have unread message(s)
</div>
function isAnyNewMessage(){
var count = 0;
for(var i = 0; i < $scope.messages.length; i++){
if($scope.messages[i].status == 'unread'){
count++;
}
}
return count;
}
Я хочу чтобы показать .loaderContainer
, если есть сообщение с status: unread
. Как достичь правильного состояния ng-show?
Fiddle: http://jsfiddle.net/tdcbqdcg/1/
К сожалению, ребята, что я сделал ошибку.
Функция оценки (isAnyNewMessage
) должна быть членом $scope
переменных, как это:
$scope.isAnyNewMessage = function() {
var count = 0;
for (var i = 0; i < $scope.messages.length; i++) {
if ($scope.messages[i].status == 'unread') {
count++;
}
}
return count;
};
С тех образца у меня есть 2 непрочитанных сообщений, поэтому '' .loaderContainer должно быть показано до –
как вы получите ваши сообщения? от вызова ajax? –
Технически нет, но на самом деле это было похоже на аякс. Предположим, что это было от ajax –