2016-11-30 34 views
0

我正在嘗試製作一個相冊網站來學習。我正在使用的屏幕現在顯示了相冊列表。每張專輯都附有0到多張照片。在Knockout中讀取一個複雜對象的計數

在我的淘汰賽視圖模型,我有:

self.Albums = ko.observableArray([]); 

這是填充專輯的列表,從我的API調用的對象。每張專輯都有一張照片列表。

我撥打電話,以獲得專輯:

var urialbums = '/api/Photo/GetAlbums'; 
$.get({ url: urialbums, contentType: "application/json" }) 
    .done(function (data) { 
     vm.Albums(data); 
    }); 

數據由一個JSON對象的(我想?),這是該序列化版本:

public class UIAlbumModel { 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public DateTime CreatedDate { get; set; } 
    public int PrivacyTypeID { get; set; } 
    public string PrivacyType { get; set; } 
    public List<UIPhotoModel> Photos { get; set; } 
} 

,你可以看,它有一張照片列表。

一張照片是一張帶有照片名稱和URL的對象。

在我看來,我顯示了具有專輯名稱的專輯列表。但是,在專輯名稱旁邊,我試圖顯示專輯中的照片數量。

<div data-bind="foreach: Albums"> 
    <div class="col-xs-3"> 
     <p><span data-bind="text: Name"></span> (<span data-bind="text: Photos().length"></span>)</p> 
     <span class="glyphicon glyphicon-folder-open"> </span> 
    </div> 
</div> 

但它在照片的計數上失敗。

text: Photos().length

錯誤:

knockout-3.4.0.js:72 Uncaught TypeError: Unable to process binding "text: function(){return Photos().length }" Message: Photos is not a function

我怎樣才能得到孩子的照片在相冊中,我是通過目前的foreach-ING多少?

+1

照片不是可觀察數組,而是普通數組。我認爲有更多的錯誤可能有助於診斷問題,但是'Photos.length'是否有效? – peinearydevelopment

+0

我已將錯誤添加到問題中。 – Craig

+0

哦!而Photos.length確實有效!這似乎是問題。 – Craig

回答

1

更改Photos().lengthPhotos.length。 正如錯誤消息所述,您試圖將照片作爲函數調用,但它不是函數。