【问题标题】:Reading a count of a complex object in Knockout在 Knockout 中读取复杂对象的计数
【发布时间】:2017-04-14 06:36:41
【问题描述】:

我正在尝试制作一个相册网站来学习。我正在处理的屏幕现在显示专辑列表。每个相册都附有 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>

但它在照片数量上失败了。

文本:Photos().length

错误:

knockout-3.4.0.js:72 Uncaught TypeError: Unable to process binding "text: function (){return Photos().length }" 消息:照片不是 功能

如何获取我当前正在遍历的相册中的子照片数量?

【问题讨论】:

  • Photos 不是可观察数组,而是普通数组。我认为还有更多可能有助于诊断问题的错误,但Photos.length 有效吗?
  • 我已将错误添加到问题中。
  • 哦!而且 Photos.length 确实有效!这似乎是个问题。

标签: javascript knockout.js


【解决方案1】:

Photos().length 更改为Photos.length。 正如错误消息所述,您尝试将照片作为函数调用,但它不是函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 2012-04-16
    • 2016-04-25
    相关资源
    最近更新 更多