2011-07-13 5 views
2

KnockoutjsのTwitter Clientの例では、一部のプロパティはJSONオブジェクトにあり、その他のプロパティはJSON変数の外に割り当てられています。違いはなんですか?なぜ、メソッド(findSavedList)は最初の宣言の一部ではありませんか?ただ、問題のコードからJSON表記とオブジェクトへの割り当ての違いは何ですか?

var viewModel = { 
    savedLists: ko.observableArray([ ... ]), 
    editingList: { ... }, 
    userNameToAdd : ko.observable(""), 
    currentTweets : ko.observableArray([]) 
}; 

viewModel.findSavedList = function (name) { 
    ... 
}; 
+0

あなたのviewModelはJSONオブジェクトではありません。 – epascarello

+3

これはJSONではありません。 http://benalman.com/news/2010/03/theres-no-suchthing-as-a-json/ – James

+0

これをクリアしていただきありがとうございます。 viewModelはオブジェクトリテラルなのですか? –

答えて

1

、私はそれはそうのような書かれていませんでした何らかの理由で表示されません。

var viewModel = { 
    savedLists: ko.observableArray([ ... ]), 
    editingList: { ... }, 
    userNameToAdd : ko.observable(""), 
    currentTweets : ko.observableArray([]), 
    findSavedList: function (name) { 
     ... 
    } 
}; 

actual exampleを見ると、私は彼らがちょうどしたかったと思います別々に関数を書いてください—多分可読性のために?

1

方法ができない理由はありません。それは文体です。

1

引用したもののどちらもJSONではありません。 JSONは、データ交換のためのテキスト表記です。引用したものはJavaScriptコードです。あなたの質問に答えるために

は、関数はオブジェクトリテラル内で定義されていなかったことない理由はありません。

var viewModel = { 
    savedLists: ko.observableArray([ ... ]), 
    editingList: { ... }, 
    userNameToAdd : ko.observable(""), 
    currentTweets : ko.observableArray([]), 
    findSavedList: function(name) { 
     ... 
    } 
}; 

著者は、明確にするためにそれらを壊れている可能性があります。


上記のJSONコメントについて:JSONはJavaScriptのリテラル表記のサブセットです。上記はストレートJavaScriptリテラル表記です。 JSONをJavaScriptコード内に置く必要はありません。テキスト形式でエンコードされたデータを渡すときにのみJSONが必要です。 の場合、JSONとなりますが無効になります。 JSONでは、プロパティ名(キー)は二重引用符で囲む必要があり、プロパティ初期化子の右側に式を入れることはできません(したがって、ko.observeableArrayという呼び出しはありません)。 JSON siteの詳細

+0

コメントに追加するにはJSONにも関数を含めることはできません。 –

+1

@マット:まあ、それらは表現になります。 :-)しかし、まだ呼び出す価値がある。 –

関連する問題