Параметр функции не определен в knockout.js

Я использую шаблон модуля раскрытия, чтобы получить некоторую структуру в моем коде knockout.js. Это очень простая примерная цель: вернуть значение свойства Name объекта. Проблема: параметр функции x не определен.

http://jsfiddle.net/ThomasDeutsch/8hzhp/

В чем именно проблема здесь? Помогите мне разобраться с этим, пожалуйста.

2 ответа

Решение

У меня есть решение. Проблема заключалась в том, что я не определил функцию. ko.computed не будет делать эту работу. Итак, вот решение: Knockout.js: параметр функции undefined

Возможно, вам следует написать

x.Name

вместо

x.getElementsByName('Name')

поскольку я не вижу, откуда x должен получить этот метод, так как x не является элементом дерева документа. Но я не эксперт в этом.

Хорошо, это работает для меня:

// My Model
function Customer(id, name, lastname) {
    this.Id = ko.observable(id);
    this.Name = ko.observable(name);
    this.LastName = ko.observable(lastname);
}

// My ViewModel
ViewModel = (function () {
    var customer = new Customer(1, "Thomas", "D")
    var getName = ko.computed(function () {
        return customer.Name ();
    })
    ;
    return {
        getName: getName
    };
})();

ko.applyBindings(ViewModel);

GetName в операторе return должен быть функцией, а не результатом функции. Вероятно, фреймворк (который я не знаю) вызывает функцию (без аргументов), чтобы получить значение.

Другие вопросы по тегам