有没有人找到将tooltips
添加到dat.gui条目的方法?
似乎没有分配class
,所以我该如何选择它们?
答案 0 :(得分:3)
您需要自己将此功能添加到dat.GUI。以下是一些指南和示例解决方案。
条目用从Controller
类继承的类表示。每个控制器都有一个私有成员__li
,代表gui中的<li>
元素。您可以扩展Controller
原型并添加title
函数,该函数将添加,更新或删除__li
的title属性。
以下是摘录:
/* dat.GUI copies the prototype of superclass Controller to all other controllers, so it is not enough to add it only to
the super class as the reference is not maintained */
var eachController = function(fnc) {
for (var controllerName in dat.controllers) {
if (dat.controllers.hasOwnProperty(controllerName)) {
fnc(dat.controllers[controllerName]);
}
}
}
var setTitle = function(v) {
// __li is the root dom element of each controller
if (v) {
this.__li.setAttribute('title', v);
} else {
this.__li.removeAttribute('title')
}
return this;
};
eachController(function(controller) {
if (!controller.prototype.hasOwnProperty('title')) {
controller.prototype.title = setTitle;
}
});
// demo
var Dummy = function() {
this.foo = 12
};
Dummy.prototype.bar = function() {
console.log('1');
};
var gui = new dat.GUI();
var d = new Dummy();
gui.add(d, 'foo').name('Foo').title('Foo\'s title');
gui.add(d, 'bar', 1, 13, 1).name('Bar').title('Bar\'s title');
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
</head>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/dat-gui/0.5/dat.gui.min.js"></script>
</body>
</html>