如何在运行时在knockoutjs对象中添加新的计算属性?

时间:2012-07-28 13:32:22

标签: javascript asp.net-mvc knockout.js knockout-2.0 sproutcore-2

我在淘汰赛中有如下节目

<input type="text" data-bind="value:firstName" />
<input type="text" data-bind="value:lastName" />
<p data-bind="text:fullName"></p>
    <script type="text/javascript" language="javascript">
        // Here's my data model
        var Person = function (id, first, last) {
            this.id = ko.observable(id);
            this.firstName = ko.observable(first);
            this.lastName = ko.observable(last);


        };

        Person.prototype.fullName = ko.computed(function () {
            return this.firstName() + " " + this.lastName();
        }, Person);


        ko.applyBindings(new Person(1, "kapil", "Garg"));
    </script>

我得到的错误是this.firstName()不是函数。我该如何添加这样的新计算机属性?

2 个答案:

答案 0 :(得分:2)

使用

 <input type="text" data-bind="value:firstName()" />


  <input type="text" data-bind="value:lastName()" />

你错过了括号,这就是淘汰赛抱怨的原因。

答案 1 :(得分:1)

在实例化ViewModel时错过了'new'关键字