2014-09-24 47 views
0

對象屬性我有這個結構的範圍變量: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佈局,我NG-顯示指令是這樣的:

<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; 
} 

我想如果有任何與status: unread的消息,請顯示.loaderContainer。 如何達到適當的顯示條件?

小提琴: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; 
}; 
+0

從這些樣品我有2個未讀消息,所以''.loaderContainer應該顯示了 – 2014-09-24 09:26:50

+0

你如何讓你的郵件?從ajax調用? – 2014-09-24 09:27:13

+0

技術上不行,但實際上它與ajax相似。假設它來自ajax – 2014-09-24 09:28:45

回答

0
$scope.isAnyNewMessage=function() { 
    var count = 0; 
    for (var i = 0; i < $scope.messages.length; i++) { 
     if ($scope.messages[i].status == 'unread') { 
      count++; 
     } 
    } 
    return count; 
} 
+0

用這種方式定義你的功能.. !! – RootHacker 2014-09-24 10:16:53

+0

哦!我沒有chked你的更新代碼..!所以你已經解決了這個偉大的..! – RootHacker 2014-09-24 10:18:31

-1

如果你想有一個肯定的回答工作,你必須提供的jsfiddle或整個控制器。但是,從您的代碼:

ng顯示是一個truefalse變量。所以你可以在ng-show中調用你的函數,但是確保你在isAnyNewMessage內返回true或false。

例如:

function isAnyNewMessage(){ 
    var count = 0; 
    for(var i = 0; i < $scope.messages.length; i++){ 
    if($scope.messages[i].status == 'unread'){ 
     count++; 
    } 
    } 
    return count > 0; 
} 

<div class="loaderContainer" ng-show="isAnyNewMessage()"> 
    You have unread message(s) 
</div> 

See the docs for ngShow.

+2

這幾乎是他已經做的,在函數內移動> 0本身並沒有什麼不同。 – 2014-09-24 09:30:30