2016-10-19 18 views
0

私はノックアウトの初心者ですので、私の無知を許してください。Knockoutjs:文字列を文字列に分割する

これは私のknockout.jsファイルです:

self.names = ko.observable(); // john, mary, jimmy 
var arrNames= new Array(); 
arrNames = self.names().toString().split(","); 

しかし、私はこのエラーを取得しています:私が試した

Cannot read property 'toString' of undefined

self.names().split(","); 
self.names.split(","); 

をしかし、何も動作。助けてください。

関連事項:文字列をコンマまたは改行に基づいて配列に分割するにはどうすればよいですか?あなたに観察が正しく文字列値で更新されていない

var a = self.arrNames() // a = [] 
self.names("john,mary,jimmy"); 
var b = self.arrNames() // b = ["john", "mary", "jimmy"] 
+0

あなたは 'はconsole.log(typeof演算self.names)'の出力を共有することができますか? – gurvinder372

+0

"function"を出力します – 90abyss

+0

console.log(typeof self.names())の出力は何ですか? – gurvinder372

答えて

2

以下のコードをご覧ください。あなたはそれがこのself.names(のように更新する必要がありますself.nameを更新したい場合は

self.names = ko.observable(); 
    self.names('john, mary, jimmy'); 
    var arrNames= new Array(); 
    arrNames = self.names().toString().split(","); 
    console.log(arrNames); 

"新しい、古い「新しい文字列、古い文字列)、= self.namesが好きではありません"。

これがあなたのお役に立てば幸いです

0

ここ:

self.names = ko.observable(); // john, mary, jimmy 
self.arrNames = ko.computed(function() { return self.names() && self.names().split(",") || []; }); 

使用例:recalculable結果を得るために計算されたあなたが使用することができます

1

becasueあなたはのtoStringプロパティを持っていないself.names() == undefinedと未定義のタイプを評価した場合は、代わりにしてみてください)

を:。

self.names = ko.observable(""); 

または

(self.names()||'').split(",");