我想用全局函数处理一个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值并将其传递给函数?
答案 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());