0

我想添加一些方法。this指令不能帮助我。

var viewModel = function () {
    firstName = ko.observable("Mike");
    lastName = ko.observable("Rassel")
    //fullName = ko.computed(function () { 
         //return firstName() + " " + lastName(); }, viewModel);
}

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

演示:http: //jsfiddle.net/gJUqK/

在本地与 2.1.0 它的工作。

4

2 回答 2

4

firstNamelastName应该fullNamemyViewModel实例的属性。

如文档中所述,这将起作用。被self添加,因为在fullName可观察的回调函数内部this会指向别的东西。

function myViewModel()
{
    var self = this;

    this.firstName = ko.observable("Mike");
    this.lastName = ko.observable("Rassel");

    this.fullName = ko.computed(function() {
        return self.firstName() + ' ' + self.lastName();
    })
}

ko.applyBindings(new myViewModel());

在这里工作:http: //jsfiddle.net/gJUqK/1/

于 2012-05-17T15:53:30.273 回答
1

部分问题在于,通过您调用的方式,viewModel绑定thisfullName函数的全局对象。

您可以通过创建viewModel构造函数并添加fullName到其原型来开始纠正此问题:

var ViewModel = function () {
  this.firstName = "Mike";
  this.lastName = "Rassel";
}

ViewModel.prototype.fullName = function () { 
  return this.firstName + " " + this.lastName; 
};

var view = new ViewModel(); // Call ViewModel with new
console.log(view.fullName()); // Prints "Mike Rassel" 

我不明白淘汰赛的东西,但希望这能让你更接近解决方案。

于 2012-05-17T15:42:38.577 回答