【问题标题】:function parameter undefined in knockout.js函数参数在 knockout.js 中未定义
【发布时间】:2012-06-07 17:13:48
【问题描述】:

我正在使用 Revealing Module Pattern 在我的 knockout.js 代码中获取一些结构。 这是一个非常简单的例子 目标:返回 Object 的 Name-Property 的值。 问题:函数参数 x 未定义。

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

这里到底有什么问题? 请帮我解决这个问题。

【问题讨论】:

标签: function knockout.js design-patterns undefined revealing-module-pattern


【解决方案1】:

也许你应该写

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);

return 语句中的 getName 必须是函数,而不是函数的结果。可能是框架(我不知道)调用函数(不带参数)来获取值。

【讨论】:

  • 谢谢,但这无济于事。问题是 x 未定义 - 我不知道为什么。顺便提一句。 x.Name 将返回可观察函数。 x.Name() 可能是正确的选择。
  • 这是我的解决方案。比我想要更多可重用的代码 - 所以我将客户从函数中移出并用 x 属性替换它。所以我可以使用每个具有名称属性的对象来使用此功能。这是我需要的最佳实践。
【解决方案2】:

我有办法。 问题是我没有定义一个函数。 ko.computed 不会完成这项工作。所以这是解决方案: Knockout.js: Function parameter undefined

【讨论】:

    猜你喜欢
    • 2012-06-08
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    • 2021-07-09
    • 1970-01-01
    • 2018-10-18
    • 2013-03-22
    相关资源
    最近更新 更多