0

私はこの例を見ています: http://knockoutjs.com/examples/contactsEditor.html

マッピングプラグインで動作する同じ例を取得する必要があります

私は似たようなものを使用していますが、より複雑な配列を使用しており、6 レベルの深さでネストされています。この例があればかなり確信がありますが、マッピングプラグインがあれば大丈夫です。


以下については、次のようなものだと推測しています。

var initialData = [
    { firstName: "Danny", lastName: "LaRusso", phones: [
        { type: "Mobile", number: "(555) 121-2121" },
        { type: "Home", number: "(555) 123-4567"}]
    },
    { firstName: "Sensei", lastName: "Miyagi", phones: [
        { type: "Mobile", number: "(555) 444-2222" },
        { type: "Home", number: "(555) 999-1212"}]
    }
];

var ContactsModel = function(contacts) {
    var self = this;

// この時点で完全に迷ってしまいました !?!? ///

    self.contacts = ko.mapping(contacts, function(contact) {

        return { firstName: contact.firstName, lastName: contact.lastName, phones: ko.observableArray(contact.phones) };
    });

    self.addContact = function() {
        self.contacts.push({
            firstName: "",
            lastName: "",
            phones: ko.observableArray()
        });
    };

    self.removeContact = function(contact) {
        self.contacts.remove(contact);
    };

    self.addPhone = function(contact) {
        contact.phones.push({
            type: "",
            number: ""
        });
    };

    self.removePhone = function(phone) {
        $.each(self.contacts(), function() { this.phones.remove(phone) })
    };

    self.save = function() {
        self.lastSavedJson(JSON.stringify(ko.toJS(self.contacts), null, 2));
    };

    self.lastSavedJson = ko.observable("")
};

ko.applyBindings(new ContactsModel(initialData));
4

1 に答える 1

0

試す:

self.contacts = ko.mapping.fromJS(contacts);

プラグイン自体を呼び出すだけでなく、マッピング プラグインでメソッドを使用する必要があります。

于 2013-03-15T20:53:02.720 に答える