【问题标题】:Simple jQuery and Knockout.js Example简单的 jQuery 和 Knockout.js 示例
【发布时间】:2018-04-11 15:49:01
【问题描述】:

我正在浏览knockout.js 网站上的this tutorial。我在第 5 步中的第 2 步遇到了问题。

有一段代码是这样的:

// 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 似乎并非如此。

了解为什么这是有效的吗?

【问题讨论】:

  • knockoutjs.com/documentation/observables.html 说“....ko.observable 对象实际上是函数....”我不知道淘汰赛,但我会据此猜测(来自 2 秒的谷歌搜索)如果你返回一个 observable,你实际上是返回一个对函数的引用,在这种情况下,它可以作为回调提供。

标签: javascript jquery ajax knockout.js


【解决方案1】:

self.chosenFolderData 一个函数:所有 KO observables 都是函数; details in the KO docs。当你调用一个 observable 并传入一个参数时,你设置了 observable 的值。这正是get 对成功回调所做的事情。


旁注:

据我所知(以及阅读文档),第三个参数是一个成功函数。

成功回调不一定是您传递的第三件事。它在您引用的示例中,但不一定。它可能是第二个,或者如果你没有传递任何成功回调,第三个可能是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 )

【讨论】:

    猜你喜欢
    • 2011-10-12
    • 2011-11-01
    • 1970-01-01
    • 2015-10-13
    • 2011-10-13
    • 2010-12-10
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多