当我试图用observable做一个简单的字符串替换时,我总是收到以下错误。在Knockout中替换简单字符串
str.replace不是一个函数
这里是我的意思的样本。我得到了以下观察到,工作正常:
this.price = ko.observable(data.price);
this.priceFloat = ko.computed(function() {
return parseFloat(Math.abs(viewModel.price())).toFixed(2);
}, this);
至于为什么我需要一个计算的版本和相同数量的可观察到的版本是另外一个问题。现在我需要删除我的逗号,这是非常基本的。我只是在我的控制台中做了这个,它工作。
var str = "3,047";
var nw = str.replace(',', '');
console.log(nw);
但是,当我把它放在计算函数中,它会返回错误。
this.price = ko.observable(data.price);
this.priceFloat = ko.computed(function() {
var str = viewModel.price();
var nw = str.replace(',', '');
console.log(nw);
return parseFloat(Math.abs(viewModel.price())).toFixed(2);
}, this);
我尝试了以下,但它没有工作,它仍然返回相同的错误。
ko.extenders.removeComma = function(target) {
var result = ko.computed({
read: function() { return target(); },
write: function (v) {
target(v.replace(/\,/g, ''));
}
});
return result;
};
this.price = ko.observable(data.price).extend({removeComma: ""});
有谁知道这是为什么?任何解释将不胜感激。
请注销'控制台.log(str);'在调用replace之前,你会看到'viewModel.price()'返回的是什么! – nemesv 2013-04-30 19:18:17
@Rachelle Uy你能发布你收到的错误信息吗? – 2013-04-30 19:39:57
@nemesv我知道,然后在字符串替换功能后,它不起作用。 :( – 2013-04-30 19:44:39