Comments (13)
修订:
add
和remove
事件的事件对象中增加index
属性,指示添加或移除的标签所在的下标
from esui.
属性命名
建议allowClose -> closable
方法参数命名
{Object} config,这个改成{Object} tab吧
对HTML声明的导航条处理策略
- 使用该选项 覆盖构造函数传入的tabs选项 。
- 删除该导航条元素,后续Tab控件会自己建立符合需求的导航条。
我觉得更合理的是:
如果有构造函数传入的tabs属性,用其重新生成导航条。否则,不需要重新建立导航条,直接在上面附加样式和行为。
关于“问题”的问题
- 是否需要setActiveIndex、getActiveIndex等方法,现在可以使用set('activeIndex')来操作
现在那个activeAt我觉得可以不要。至于这两个方法,可以有可以没有。
- 是否添加属性使得控件在导航条最后面有一个“添加”按钮,点击后触发add事件,从而实现可变的标签页功能
有这需求么??看大家咯
- 移除一个标签的时候,对应的面板是否有默认的操作(隐藏?删除?)
我觉得不能删除面板。可以隐藏
from esui.
对HTML声明的导航条处理策略
最初的版本是用户有声明导航条元素,直接用那个元素,不删了重建的,可是碰到些问题。
因为默认的导航条是ul > li
的结构,但如果直接复用,用户完全可能用div > span
结构,这会导致后续添加tab时,要智能检测用户用的是<li>
还是<span>
还是啥别的,工作量非常大。
所以为了偷懒,又不想限制用户一定要用ul > li
(我不觉得限制得了),就干脆删了原来的重建一个。反正在控件管理下的
其它
现在那个activeAt我觉得可以不要
说白了activateAt(index)
就是set('activeIndex', index)
,只是因为add
和remove
都有个对应的传下标的方法在,保持统一性就留出来了。要去掉也OK,如果其他人没意见,到截止时我就去掉这方法。
from esui.
导航条处理策略
删了重建的问题是,用户可能在上面自定义了自己的class做特殊样式,或其他什么东西,就没了。
activeAt
我们的ui体系,统一性在于,设置相关的都是set[...]
from esui.
导航条处理策略
那能不能这样,我们要求用户必须使用<ul>
或<ol>
元素,不得用其它元素作为导航条。然后导航条里面的innerHTML
是肯定会被覆盖的(更换datasource
的时候有清理掉的需要),所以里面的<li>
就没什么好说的了,要是在<li>
上加样式到时候被冲掉了不负责。
那样又引出另一个问题,如果导航条元素已经存在,要移动一下放到main
的最前面来吗?
activeAt
OK,删。
from esui.
导航条处理策略
不如kiss点,用data-role="navigator"下的第一个element的tagName?
还有,如果已经存在,就不应该移动它了吧。举个例子,ie的contentEditable,插入一个a,会自动把href换成绝对路径。这就是做得越多错的越多的典型……
from esui.
不如kiss点,用data-role="navigator"下的第一个element的tagName?
好吧又变回第一版了……不过需要声明的是,即便我能处理元素类型的问题,在导航条的子元素上有其它的属性或者class,也是会被刷掉的,肯定会用navigator.innerHTML
生成各个tab项,别指望会留下来了。
from esui.
没变回第一版啊,第一版是不支持data-role="navigator"的。
from esui.
那个第一版是我本地的一套实现,从来没commit上来过,你们没看到过哈,那个版本里有
var navNodeName = this.navigator.nodeName.toLowerCase();
var nodeName = navNodeName === 'ul' || navNodeName === 'ol' ? 'li' : 'span';
// ...
等讨论时间截止,没啥变化的话我会使用现在讨论的方案
from esui.
喔喔,看来做方案和泡妞一样,通常第一反应看上的是最好的
from esui.
我仔细思考了一下,认为我们应该对控件的HTML结构有更强的控制,理由如下:
- 乱用HTML,UI的CSS无法生效
- 乱用HTML,导致控件实现有太多的分支,比如这个
Tab
还要算navigator
下的子元素是啥
我建议控件强制要求用户使用固定的结构,比如Tab
的navigator
如果有,则必须是<ol>
或<ul>
,里面是一堆li > span
结构,不然就出错不管。
我相信用户都写HTML了,写个<ul>
没什么难度,为什么要ESUI去纵容用户呢?
另外,保留navigator
元素是可以,但如果datasource
之类的关键属性有变化,还是会直接刷掉的。
from esui.
在 b9e04ad 中,支持Tab
控件从自定义的导航条元素中提取内容后保留该元素,但不提供 猜测元素标签 的功能,永远只使用<li>
标签,因此Tab
控件的导航条元素只能是<ul>
或<ol>
元素。
推荐的结构如下:
<ul>
<li data-for="panel1"><span>tab1</span></li>
</ul>
原则上 不建议 自己提供导航条元素,因为allowClose
等属性会影响导航条的内容,建议让控件自动生成正确的结构。
from esui.
关,后续单独发标准文档Review
from esui.
Related Issues (20)
- 日程投放控件 HOT 4
- InputCollection 应当继承 ControlCollection HOT 1
- Table 的 overflowX 属性为非 hidden 的时候多出一个横向滚动条 HOT 3
- BoxGroup有一处事件没使用addDOMEvent绑定
- 解决set和setProperties触发change的问题
- Table的依赖不全
- 控件初始化子控件时的valueReplacer管理
- 控件初始化子控件时的valueReplacer管理
- 控件初始化子控件时的valueReplacer管理
- 指定元素的销毁子控件
- Select 控件对于value比较判断的兼容性问题 HOT 2
- 希望能添加一些布局相关的组件 HOT 4
- 对于带有数据源的控件是否应该支持外部不提供数据源的场景的表决 HOT 19
- addChild的时候添加校验 HOT 6
- viewContext的疑问 HOT 3
- 加个Lisence HOT 1
- MonthView的年月下拉框格式可调 HOT 1
- 渐变背景的问题
- Panel控件的addContent方法不适用table布局 HOT 2
- 关于拓展组件
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from esui.