我正在编写一个简单的jQuery插件,它将与JSON对象/数组接口。我想让这个对象数组足够灵活,这样人们就可以将自己的对象数组传递给插件函数。我希望用户能够通知插件如何在JSON对象中获得两个不同的值。例如,假设这是JSON --
[
{
name: "Baseball Opening Day",
format: "jpg",
urls: {
small: "http://myurl.com/images/small/baseball.jpg",
big: "http://myurl.com/images/big/baseball.jpg"
}
},
// etc.
]
字符串
如果插件“知道”它将被传递一个图像对象数组,但这些图像对象可能以多种方式格式化,我们如何传递一个选项来告诉它在哪里找到各种东西?例如,如果我想显示一个标题,我会要求一个对标题值的引用。这个比较简单:
$("gallery").myPlugin({
references: {
caption: "name"
}
});
型
在插件中,我们可以得到如下的值,一旦我们循环遍历收集的图像对象:
// Assuming the value passed in is called "options"...
var caption = image[options.references.caption];
型
这将被解释为image[“name”],它与image.name相同,并且工作正常。
但是你如何告诉插件如何进入image.urls.small呢?你不能这样做:
$("gallery").myPlugin({
references: {
caption: "name",
urlSmall: "urls.small"
}
});
型
因为它将被解释为image[“urls.small”]并返回undefined
。
有办法通过吗?或者在这一点上,我必须使用一个回调函数,像这样:
$("gallery").myPlugin({
references: {
caption: "name",
urlSmall: function () {
return this.urls.small;
}
}
});
// Call it like this inside the plugin image loop
var urlSmall = options.references.urlSmall.call( image );
型
我知道这是一个选项,但我想知道是否有一种方法可以避免强迫用户编写回调函数,如果他们可以传递一个对嵌套对象属性的引用,以某种方式?
谢谢你,谢谢
1条答案
按热度按时间nr9pn0ug1#
您只需要一个方法来拆分这些属性名。给你点东西让你开始。
字符串
在插件中,您可以使用
型
Lodash的
_.get
可以像其他工具库一样正确地处理所有角落的情况。