【问题标题】:KnockoutJS observable array - how to get lengthKnockoutJS 可观察数组 - 如何获取长度
【发布时间】:2014-05-18 20:56:03
【问题描述】:

我有一个具有可观察数组的 KnockoutJS 模型,我需要能够从 JSON 加载,并通过简单地将数据对象推送到数组来添加。我发现当我使用映射加载数据时,我无法再获得数组中项目的长度/计数,它总是等于零。我认为这是由于映射?

这里是鬼魂:

var SalesPerson = function (data) {
    var self = this;
    if (data != null) {
        ko.mapping.fromJS(data, {Regions: regionMapping, Customers: customerMapping},     self); 
    } else {
        self.ID = ko.observable();
        self.FullName = ko.observable().extend({
            required: {
                message: '* Persons name needed'
            }
        });
        //self.Regions = ko.observableArray(); 
         self.Regions = ko.mapping.fromJS([]);
         self.Customers = ko.mapping.fromJS([]);
         //self.Customers = ko.observableArray(); // array of "Customers", who each     have many orders
    }

注意我最初是使用例如self.Regions = ko.observableArray(); 放入数组,然后在看到related post 后更改为self.Regions = ko.mapping.fromJS([]);

这里是一个完整的小提琴:fiddle example

要测试小提琴,请单击“从在线模型加载”。区域和客户的“计数”应该更新,但它没有更新,它保持为零。

【问题讨论】:

    标签: knockout.js knockout-mapping-plugin


    【解决方案1】:

    observable 是一个函数,因此您必须在访问任何属性之前调用它。

    所以应该是text:Regions().length 而不是text:Regions.length

    这里更新了version

    【讨论】:

    • details details ...我会掌握这一切的,非常感谢!
    • 我真的不明白为什么我不断收到“区域不是函数”。但是如果我做控制台日志,那么它会打印出一个函数
    猜你喜欢
    • 2012-04-20
    • 2017-11-25
    • 2015-09-18
    • 1970-01-01
    • 2018-08-04
    • 2013-12-16
    • 2013-05-23
    • 2015-09-01
    • 2012-06-02
    相关资源
    最近更新 更多