私はフォトアルバムのサイトを学習しようとしています。今作業している画面にアルバムのリストが表示されます。各アルバムには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のだアルバム内の子の写真の数を得ることができますか?
写真は、観測可能な配列ではなく、単純な配列です。問題を診断するのに役立つエラーがさらにあると思いますが、 'Photos.length'は機能しますか? – peinearydevelopment
私は質問にエラーを追加しました。 – Craig
ああ!そしてPhotos.lengthは実際に動作します!それは問題のようです。 – Craig