简单的字符串替换在Knockout
Simple String Replace in 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);
但是当我把它放入computed函数时,它返回错误。
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: ""});
有人知道为什么会这样吗?
很可能是因为可观察对象返回的值不是字符串,这会导致此错误。下面是一个处理方法:
this.price = ko.observable(data.price);
this.priceFloat = ko.computed(function() {
var str = viewModel.price() ? viewModel.price().toString() : '';
var nw = str.replace(',', '');
console.log(nw);
return parseFloat( Math.abs(viewModel.price()) ).toFixed(2);
}, this);
编辑:http://jsfiddle.net/Qbc7Z/3/在注释的ko中,您可以这样使用…
<!-- ko text: address().telephone.toString().replace(/('d{3})('d{3})('d{4})/, "($1) $2-$3") --><!-- /ko --><br/>
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 我如何找到一个句子中的所有空格并替换忽略它们
- 如何用更合适的内容替换document.write
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 用空格替换下划线PHP
- str.split(someString).join(someOtherString)是否等效于替换
- 使用javascript的图像替换循环
- window.location替换并传递URL历史记录条目中的变量
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- 替换标记中的属性
- 指令的模板必须只有一个根元素:With restrict E&替换true
- AngularJs对ng消息的自定义替换
- 如何将Knockout.JS与服务器已经在DOM中呈现的数据同步
- 用超链接替换URLS
- 用cdata标记替换脚本标记
- 如何在使用数据表时替换Knockout中的数组实例
- 替换Knockout.js observableArray中的所有元素
- 简单的字符串替换在Knockout
- Knockout如何知道当它所存在的对象被替换时更新其派生属性的绑定?