0

我将我的代码上传到 jsFiddle,你可以在那里测试它。

http://jsfiddle.net/2RPsw/1/

这是问题所在,而不是获得全名,它显示了函数的源代码。如果我使用 ko.computed,它将起作用。我在下面所做的也应该没问题。有人可以向我解释为什么它显示源代码,而不是价值。

            <p>First name: <input data-bind="value: firstName" /></p>
            <p>Last name: <input data-bind="value: lastName" /></p>
            <p>Full name: <span data-bind="text: fullName"></span></p>?

KO代码:

function AppViewModel() {

    self = this;

    self.firstName = ko.observable("Bert");
    self.lastName = ko.observable("Bertington");
    self.fullName = function(){
        return  self.firstName() + " " + self.lastName();

    };
}

// Activates knockout.js
ko.applyBindings(new AppViewModel());?

更新:

回答中医的问题。为什么我不想使用 ko.computed。并不是我不想使用它,只是因为我很困惑,不知道什么时候使用它。例如

以下代码来自淘汰赛第一个教程。它不使用 ko.computegd,但它可以工作。

http://learn.knockoutjs.com/#/?tutorial=intro

self.capName = function(){
    var curVal = self.lastName();
    self.lastName(curVal.toUpperCase());
};
4

1 回答 1

5

您应该使用 ko.computed:

 self.fullName = ko.computed(function(){
        return  self.firstName() + " " + self.lastName();

 },this);

这将确保无论何时您的值firstNamelastName更改更改都会反映在您的 ko.computed 函数中,并且您不必手动更新跨度的值。

如需进一步解释,您可以阅读以下内容:

http://knockoutjs.com/documentation/computedObservables.html

此链接上或多或少给出了相同的示例。

如果您不想使用 ko.computed,请参阅此链接:http: //jsfiddle.net/2RPsw/10/

于 2012-10-08T15:44:58.040 回答