2016-04-06 117 views
0

我在函數中有一個數組arr,我想返回$ scope.notifications,因此我可以在Ionic Framework中的HTML中使用它。 我需要通過一個函數來完成它,所以我可以在稍後將其返回之前對數組執行多個操作。 我的控制器:

.controller('notificationsCtrl', function($scope) { 
    $scope.notifications = function(){ 
     var arr = [ 
      {user:"misterx", name:"Mister X", action:4, image: "https://www.holidaycheck.de/mediaproxy?target=hcaHR0cDovL3d3dy5ob3RlbC5kZS9tZWRpYS9ob3RlbC9waWN0dXJlcy8zMzQvMzM0MTIzL0V4dGVyaW9yXzYzNTkyNzk5NDMyODQ1OTAwMi5qcGc%3D"}, 
      {user:"misterx", name:"Mister X", action:2, image: "https://www.holidaycheck.de/mediaproxy?target=hcaHR0cDovL3d3dy5ob3RlbC5kZS9tZWRpYS9ob3RlbC9waWN0dXJlcy8zMzQvMzM0MTIzL0V4dGVyaW9yXzYzNTkyNzk5NDMyODQ1OTAwMi5qcGc%3D"}, 
      {user:"ladyx", name:"Lady X", action:1} 
     ]; 
     return arr; 
    } 
}) 

的HTML:

<ion-item ng-repeat="msg in notifications" class="item-text-wrap"> 
    <div class="row"> 
     <div class="col-80"> 
      <strong>{{msg.name}}</strong> (<em>@{{msg.user}}</em>) {{msg.action}}. 
     </div> 
     <div class="col-20"> 
      <img src="{{msg.image}}" style="border-radius: 50px; width: 100%"> 
     </div> 
    </div> 
</ion-item> 

當我直接傳遞通知作爲數組,沒有一個函數,它的工作原理。我在這裏做錯了什麼?

+0

你說的「以後返回之前執行與陣列幾個動作」呢?我沒有必要在這裏使用一個函數。 – henrikmerlander

回答

2

使用ng-repeat="msg in notifications"試圖重複該函數本身,而不是它的返回值。你要調用的函數:

<ion-item ng-repeat="msg in notifications()">

https://jsfiddle.net/dj1gpjb8/

我應該指出,雖然,也有使用這種方法的性能問題:該函數將被頻繁調用,因爲角度無法預測功能的結果是否會改變。您最好將通知作爲普通數組嵌入到範圍中;

$scope.notifications = [{ 
    user: "misterx", 
    name: "Mister X", 
    //... 
    }]; 

    $scope.addNotification = function() { 
    $scope.notifications.unshift({ 
     user: "newguy", 
     name: "New Guy" 
    }); 
    // angular will notice that notifications[] has changed, and re-render the component on the next $digest 
    }; 

https://jsfiddle.net/1du593af/

-2

下面的代碼是電流,從而無需使用函數返回JSON格式:任何後來修改了陣列將自動觸發組件與新的值(一個或多個)重新渲染

.controller('notificationsCtrl', function($scope) { 
$scope.notifications = [ 
     {user:"misterx", name:"Mister X", action:4, image: "https://www.holidaycheck.de/mediaproxy?target=hcaHR0cDovL3d3dy5ob3RlbC5kZS9tZWRpYS9ob3RlbC9waWN0dXJlcy8zMzQvMzM0MTIzL0V4dGVyaW9yXzYzNTkyNzk5NDMyODQ1OTAwMi5qcGc%3D"}, 
     {user:"misterx", name:"Mister X", action:2, image: "https://www.holidaycheck.de/mediaproxy?target=hcaHR0cDovL3d3dy5ob3RlbC5kZS9tZWRpYS9ob3RlbC9waWN0dXJlcy8zMzQvMzM0MTIzL0V4dGVyaW9yXzYzNTkyNzk5NDMyODQ1OTAwMi5qcGc%3D"}, 
     {user:"ladyx", name:"Lady X", action:1} 
    ]; 

} 

})

+0

他們已經知道它可以作爲一個數組,在問題中提到。他們希望將其作爲一項功能。這在問題中也提到了。 (這也是一個好主意,解釋你的答案,而不是僅僅傾銷代碼,並說「這有效」) –

+0

我知道,但如果你不通過param函數就沒有必要使用函數。 – Amir

+0

我也知道。但這不是他們所問的。 (可能很有可能是他們*將參數傳遞給函數,或者有其他充分的理由想要這樣做,但是在作出好動作時忽略了這個問題。)如果有人問「我知道我可以做X,但爲什麼Y不能工作「,然後回答」做X「而沒有解釋是沒有幫助的。 –