有人可以向我解释这段代码的用途吗?
dojo[(show ? "remove" : "add") + "Class"](this.listNode, "tweetviewHidden");
以下是此函数值所属的函数:
// Provide the class
dojo.provide("tweetview._ViewMixin");
// Declare the class
dojo.declare("tweetview._ViewMixin", null, {
// Returns this pane's list
getListNode: function() {
return this.getElements("tweetviewList",this.domNode)[0];
},
// Updates the list widget's state
showListNode: function(show) {
dojo[(show ? "remove" : "add") + "Class"](this.listNode, "tweetviewHidden");
},
// Pushes data into a template - primitive
substitute: function(template,obj) {
return template.replace(/\$\{([^\s\:\}]+)(?:\:([^\s\:\}]+))?\}/g, function(match,key){
return obj[key];
});
},
// Get elements by CSS class name
getElements: function(cssClass,rootNode) {
return (rootNode || dojo.body()).getElementsByClassName(cssClass);
}
});
来源:http://dojotoolkit.org/documentation/tutorials/1.6/mobile/tweetview/starting_tweetview
答案 0 :(得分:2)
非常简单,如果show为true,则会调用dojo.removeClass(this.listNode, "tweetviewHidden");
,如果为false,则会调用dojo.addClass(this.listNode, "tweetviewHidden");
。
基本上它是一个切换功能。
[]括号打开一个对象以按键访问该值。就像var bla={"foo":"bar"}; bla["foo"];
一样。现在,由于它的dojo,值是一个函数,将被执行
答案 1 :(得分:1)
稍微冗长一点,代码做了类似的事情:
if (show) { f = dojo["removeClass"]; }
else { f = dojo["addClass"]; }
f(this.listNode, "tweetviewHidden");
我认为dojo
充当可以通过[]
按名称查找的功能的容器。
答案 2 :(得分:1)
它使用[]
括号和?:
三元运算符来执行以下操作:
if(show){
dojo.removeClass(this.listNode, "tweetviewHidden");
}else{
dojo.addClass(this.listNode, "tweetviewHidden");
}
答案 3 :(得分:0)
通过“show”变量“切换”类。也就是说,如果“show”是真实的,那么该类将从节点中删除,否则它将被添加到节点。
考虑使用以下快捷方式:
dojo.toggleClass(this.listNode, "tweetviewHidden", !show);