我是淘汰赛的新手所以请原谅我的无知。
这是我的knockout.js文件:
/business/-KUNqai...
但是我收到了这个错误:
无法读取未定义的属性'toString'
我试过了:
self.names = ko.observable(); // john, mary, jimmy
var arrNames= new Array();
arrNames = self.names().toString().split(",");
但没有任何作用。请帮忙。
相关说明:如何根据逗号或换行符将字符串拆分为数组?
答案 0 :(得分:2)
您可以使用computed来获得可重复计算的结果:
self.names = ko.observable(); // john, mary, jimmy
self.arrNames = ko.computed(function() { return self.names() && self.names().split(",") || []; });
样本用法:
var a = self.arrNames() // a = []
self.names("john,mary,jimmy");
var b = self.arrNames() // b = ["john", "mary", "jimmy"]
答案 1 :(得分:1)
因为如果您评估self.names() == undefined
且未定义的类型没有toString属性;)
尝试改为:
self.names = ko.observable("");
或
(self.names()||'').split(",");
答案 2 :(得分:0)
此处,您的observable未使用字符串值正确更新。
请查看以下代码。
self.names = ko.observable();
self.names('john, mary, jimmy');
var arrNames= new Array();
arrNames = self.names().toString().split(",");
console.log(arrNames);
如果你想更新self.name,它应该像这个self.names(“new strings,old strings”)更新,而不是像self.names =“new,old”。
希望这会对你有所帮助。