2016-11-30 8 views
0

私はフォトアルバムのサイトを学習しようとしています。今作業している画面にアルバムのリストが表示されます。各アルバムには0〜数枚の写真が添付されています。私のノックアウトビューモデルでノックアウトで複雑なオブジェクトの数を読み取る

、私が持っている:

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.lengthに変更してください。 エラーメッセージでは、写真を関数として呼び出そうとしていますが、関数ではありません。

関連する問題