在Knockoutjs的Twitter Client示例中,一些属性位于JSON对象中,而其他属性则分配在JSON变量之外。有什么不同?为什么方法(findSavedList
)不能成为初始声明的一部分?
var viewModel = {
savedLists: ko.observableArray([ ... ]),
editingList: { ... },
userNameToAdd : ko.observable(""),
currentTweets : ko.observableArray([])
};
viewModel.findSavedList = function (name) {
...
};
答案 0 :(得分:1)
仅从问题中的代码中,我认为没有任何理由不能这样编写:
var viewModel = {
savedLists: ko.observableArray([ ... ]),
editingList: { ... },
userNameToAdd : ko.observable(""),
currentTweets : ko.observableArray([]),
findSavedList: function (name) {
...
}
};
查看actual example,我认为他们只是想单独编写函数 - 可能是为了便于阅读?
答案 1 :(得分:1)
没有理由不采用方法;这是风格。
答案 2 :(得分:1)
你引用的东西都不是JSON。 JSON是数据交换的文本符号。你引用的是JavaScript代码。
要回答你的问题,没有理由不能在对象文字中定义该函数:
var viewModel = {
savedLists: ko.observableArray([ ... ]),
editingList: { ... },
userNameToAdd : ko.observable(""),
currentTweets : ko.observableArray([]),
findSavedList: function(name) {
...
}
};
为清楚起见,作者可能已将其分解。
关于我上面的JSON评论:JSON是JavaScript文字符号的子集。以上是直接的JavaScript文字表示法。你永远不需要JavaScript代码中的JSON;当你以文本形式传递数据时,你只需要JSON。如果 意味着是JSON,那么它将是无效的。在JSON中,属性名称(键)必须是双引号,并且您不能在属性初始值设定项的右侧有表达式(因此,不能调用ko.observeableArray
)。有关JSON site的更多信息。