簡體   English   中英

無法將項目添加到observableArray

[英]Cannot add item to observableArray

這應該是一個非常瑣碎的問題,但這讓我發瘋了! 我不喜歡本教程的第1步,但無法正常工作....所以這是我的代碼:

/* Model definition */
    var PrivateSalesMenuModel = function () {
    var self = this;
    this.privateSales = ko.observableArray();
    this.addPrivateSale = function (privateSale) {
        var newPs = new PrivateSaleMenuItem(privateSale);
        self.privateSales.push(newPs);
    };
};

var PrivateSaleMenuItem = function (ps) {
    this.title = ps.Description;
    this.hasActual = ps.HasActual;
    this.hasSale = ps.HasSale;
    this.listaId = ps.ListaId;
    this.isSelected = false;
};
/* end model definition*/

var privateSalesMenuModel = new PrivateSalesMenuModel();

ko.applyBindings(privateSalesMenuModel);

非常簡單...我有一個代表我的模型的對象,它是其他對象的集合,稱為PrivateSaleMenuItem 問題是addPrivateSale無法按預期工作。 我在代碼中的某個地方

privateSalesMenuModel.addPrivateSale(ps);

其中ps是由其他JavaScript函數創建的對象...無論如何,正是我在PrivateSaleMenuItem的構造函數中需要的對象,因此它的一致性不是問題。 問題似乎是self.privateSales.push(newPs); 不工作......這inocation后,數量privateSalesMenuModel.privateSales仍為0。這是為什么?

已編輯

我用相同的確切代碼在jsFiddle中放了一個示例,它工作正常,所以我懷疑頁面中的某些內容使observableArray的push方法停止工作了……我怎么能知道它是什么?

運... jsfiddle的鏈接http://jsfiddle.net/YBHf5/

似乎您在這里在代碼中混合了它和self:

    var PrivateSalesMenuModel = function () {
    var self = this;
    this.privateSales = ko.observableArray();
    this.addPrivateSale = function (privateSale) {
        var newPs = new PrivateSaleMenuItem(privateSale);
        self.privateSales.push(newPs);
    };
};

將它們全部更改為可自我修復,如下所示:

var PrivateSalesMenuModel = function () {
    var self = this;
    self.privateSales = ko.observableArray();
    self.addPrivateSale = function (privateSale) {
        var newPs = new PrivateSaleMenuItem(privateSale);
        self.privateSales.push(newPs);
    };
};

請在這里查看工作小提琴:

http://jsfiddle.net/YBHf5/1/

解決的問題....這確實是一個微不足道的問題,有一個微不足道的解決方案:我只需要在頁面末尾推送外部腳本聲明即可。 我的腳本(其中包含問題提供的代碼)位於頁面頂部,正文內部,但位於其他任何內容上方。 只需將腳本引用放在正文末尾,一切便會再次按預期工作。 抱歉浪費您的時間...但是很難找到這個小問題,因為調試時根本不清楚原因

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM