目前我正在使用Tabview addable plugin,这是由用户点击tabview小部件的添加按钮启动的。
现在我还想动态地在某个事件上添加一个标签。
我尝试使用Tabview的添加方法(http://developer.yahoo.com/yui/3/api/WidgetParent.html#method_add)
function myJsFunc(name, content){
tabview3.add({
label: name,
content: '<textarea> </textarea>',
index: Number(tabview3.size())});
}
这里tabview3是Tabview小部件的全局对象。这似乎不起作用。我有什么遗漏的东西吗?任何帮助表示赞赏。
答案 0 :(得分:2)
以下将允许您创建两个按钮来添加和删除标签。
...
<input type="button" id="addTabButton" value="Add Tab" />
<input type="button" id="removeTabButton" value="Remove Tab" />
...
var addTab = function(e) {
e.preventDefault();
input = {"label":"test","content":"TestContent","index":"2"};
mainTabView.add(input, input.index);
}
Y.on("click", addTab, ["#addTabButton"]);
var removeTab = function(e) {
e.preventDefault();
mainTabView.remove(1);
}
Y.on("click", removeTab, ["#removeTabButton"]);
var mainTabView = new Y.TabView({
srcNode:'#TheMainTabView',
plugins: [Addable, Removeable]
});
mainTabView.render();
...
答案 1 :(得分:0)
我遇到了与YUI3相同的问题。永远都算不清楚。如果我可以重新启动项目,我会选择YUI2。有关YUI2的更多文档,更不用说tabview仍然处于测试阶段。
话虽这么说,我使用以下代码解决了这个问题:
var Addable = function(config) {
Addable.superclass.constructor.apply(this, arguments);
};
Addable.NAME = 'addableTabs';
Addable.NS = 'addable';
Y.extend(Addable, Y.Plugin.Base, {
ADD_TEMPLATE: '<li class="yui3-tab" title="Add Your Own Custom Tab!">' +
'<a class="yui3-tab-label yui3-tab-add">+</a></li>',
initializer: function(config) {
var tabview = this.get('host');
tabview.after('render', this.afterRender, this);
tabview.get('contentBox')
.delegate('click', this.onAddClick, '.yui3-tab-add', this);
},
getTabInput: function() {
var tabview = this.get('host');
return {
label: window.prompt('What do you want to call this tab?:', 'foo'),
content: window.prompt('Page Url. Replace foo.com with whatever page you want loaded.', '<iframe src="http://www.foo.com" width="100%" height="850px" frameborder="0"></iframe>'),
index: Number(window.prompt('What tab number would you like this to be (0 = first):', tabview.size()))
}
},
afterRender: function(e) {
var tabview = this.get('host');
tabview.get('contentBox').one('> ul').append(this.ADD_TEMPLATE);
},
onAddClick: function(e) {
e.stopPropagation();
var tabview = this.get('host'),
input = this.getTabInput();
tabview.add(input, input.index);
}
});