我有一个简单的情况,我想接受一个文本数组,所以我让用户输入用逗号分隔的数据,在我的KO视图模型中,我使用ko.computed
来解析它。代码如下所示。 (主要感谢RPN向我展示这个技巧)
var ViewModel = function() {
this.values = ko.observableArray(["test1", "test2", "test3", "test4"]);
this.computedJoinedValues = ko.computed({
read: function() {
return this.values().join(",");
},
write: function(newValue) {
this.values(newValue.split(","));
},
owner: this
});
};
ko.applyBindings(new ViewModel());
<input data-bind="value: computedJoinedValues" />
<hr/>
<ul data-bind="foreach: values">
<li data-bind="text: $data"></li>
</ul>
这很有效 - 但是我遇到了空白问题而且我有一点脑断裂。我想删除每个条目的尾随空格,因为我最终得到了像tag1, tag2
这样的结果,它实际上被序列化为[ "tag1", " tag2" ]
- 所以我认为适当的地方是{{1功能,所以我尝试了这个......
write
但我仍然在数组中获得空格。谁能确定我做错了什么?
答案 0 :(得分:1)
如果您使用jQuery,以下代码将帮助您:
write: function(newValue) {
this.values($.map(newValue.split(","), $.trim));
}
答案 1 :(得分:0)
你需要从字符串内部去掉空格 - trim()只是从字符串的开头和结尾剥去它:
write: function(newValue) {
this.values(newValue.replace(/\s/g, '').split(","));
}