我正在浏览this tutorial在 knockout.js
网站上。我在第 2 步(共 5 步)中遇到了问题。
有一个代码块是这样的:
// Data
var self = this;
self.folders = ['Inbox', 'Archive', 'Sent', 'Spam'];
self.chosenFolderId = ko.observable();
self.chosenFolderData = ko.observable();
// Behaviours
self.goToFolder = function(folder) {
self.chosenFolderId(folder);
$.get('/mail', { folder: folder }, self.chosenFolderData);
};
我的问题是,我不明白 jQuery 如何处理 $.get
的第三个参数。据我所知(通过阅读 the docs ),第三个参数是成功函数。然而, self.chosenFolderData 似乎并非如此。
知道为什么这有效吗?
最佳答案
self.chosenFolderData
是一个函数:所有 KO 可观察量都是函数; details in the KO docs 。当您调用可观察量并传入参数时,您就设置了可观察量的值。这正是 get
对成功回调所做的事情。
旁注:
To my knowledge (and from reading the docs), the third argument is a success function.
成功回调不一定是您传递的第三件事。这是您引用的示例中的内容,但不一定。它可能是第二个,或者如果您没有传递任何成功回调,则第三个可能是 dataType
。
文档中显示的 jQuery.get
签名是:
jQuery.get( url [, data ] [, success ] [, dataType ] )
[...]
表示可选参数。这意味着您可以执行七种不同组合中的任意一种:
jQuery.get( url )
jQuery.get( url , data )
jQuery.get( url , data , success )
jQuery.get( url , success
jQuery.get( url , success , dataType )
jQuery.get( url , data , dataType )
jQuery.get( url , data , success , dataType )
关于javascript - 简单的 jQuery 和 Knockout.js 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47019085/