當我試圖用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