如何获得ko.observable()值

时间:2014-08-22 20:56:55

标签: knockout.js

我想用全局函数处理一个ko.observable。这是我的viewModel:

function articleVM() {
this.Id = ko.observable();
this.Title = ko.observable();
this.Status = ko.observable();
this.Url = ko.pureComputed(function () {
    return Admin.Global.removeDiacritics(this.Title);
}, this);}

其中removeDiacritics在“Title”上调用.replace方法。

所以“Title”是一个可观察的,而“removeDiacritics”正在等待一个字符串。如何获取Title值并将其传递给函数?

2 个答案:

答案 0 :(得分:4)

问题是内部范围“this”(在ko.pureComputed中使用的范围)与外部范围“this”不同。您需要定义您的功能有点不同:

function articleVM() {
   var self = this;
   self.Id = ko.observable();
   self.Title = ko.observable('SomeTitle');
   self.Status = ko.observable();
   self.Url = ko.pureComputed(function () {
      return Admin.Global.removeDiacritics(self.Title());
   }, this);
   return self;
}

现在self指的是外部范围函数。此外,我给了标题可观察的“SomeTitle”值。我认为这将解决您的问题,但如果没有,我建议您使用jsfiddle和一些console.log语句来确定分配的值和位置......

答案 1 :(得分:0)

将标题设置为空字符串

this.Title = ko.observable('');

并将标记加入标题:

return Admin.Global.removeDiacritics(this.Title());