如何在iview中使用rander函式渲染Select元件和input元件
阿新 • • 發佈:2019-01-09
轉自:http://blog.csdn.net/dead_rabbit6_0/article/details/79239206
僅用於學習,違者必究!!!
iview的新手文件寫的並不怎麼樣,把鍋都推給了vue,這一天的工作卡在了在Table中加入Select的問題上,再次記錄學習過程:
首先對Render進行分析,在iview官方的文件中,找到了table插入Button的例子:
- {
- title: 'Action',
- key: 'action',
- width: 150,
- align: 'center',
- render: (h, params) => {
- return h('div', [
- h('Button', {
- props: {
- type: 'primary',
- size: 'small'
- },
- style: {
- marginRight: '5px'
- },
- on: {
- click: () => {
- this.show(params.index)
- }
- }
- }, 'View'),
- h('Button', {
- props: {
- type: 'error',
- size: 'small'
- },
- on: {
- click: () => {
- this.remove(params.index)
- }
- }
- }, 'Delete')
- ]);
- }
- render: (h, params) => {
- return h('Button', {
- props: {
- type: 'primary',
- size: 'small'
- },
- style: {
- marginRight: '5px'
- },
- on: {
- click: () => {
- this.show(params.index)
- }
- }
- }, 'View'),
- );
- }
好,現在開始寫Table元件中的Select元件:
[javascript] view plain copy- render: (h, params) => {
- return h('Select', {
- props:{
- value: this.data[params.index].volumeType,
- },
- on: {
- 'on-change':(event) => {
- this.data[params.index].volumeType = event;
- }
- },
- },
- [
- h('Option',{
- props: {
- value: '1'
- }
- },'option1'),
- h('Option',{
- props: {
- value: '2'
- }
- },'option2')
- ]
- );
- },
好,現在我們實現了基本的渲染。現在我們實現動態改變option的內容,與元件的data結合起來,畢竟當資料量大的時候,總不能一個一個的寫上去。
觀察render的第三個引數為一個物件陣列,我們可不可以使用便利資料陣列的方式生成呢?(廢話)
直接上程式碼,在陣列的地方寫入:
[javascript] view plain copy- this.volumeTypes.map(function(type){
- return h('Option', {
- props: {value: type}
- }, type);
- })
其中,this.volumeTypes就是我們的列資料,當然,這是最基本的繫結的寫法,如果想使用物件陣列,自行研究,很easy的~
這是我們的最終結果:
[javascript] view plain copy- {
- title: '卷型別',
- key: 'volumeType',
- align: 'center',
- render: (h, params) => {
- return h('Select', {
- props:{
- value: this.data[params.index].volumeType,
- },
- on: {
- 'on-change':(event) => {
- this.data[params.index].volumeType = event;
- }
- },
- },
- this.volumeTypes.map(function(type){
- return h('Option', {
- props: {value: type}
- }, type);
- })
- );
- },
- },
****************************************************************************************************
以下是本人的程式碼,僅供參考
效果如下:
渲染input元件: