javascript - Bootstrap-vue - 动态设置表变量

标签 javascript twitter-bootstrap vue.js vuejs2 bootstrap-vue

所以我正在使用 Bootstrap Vue使用此测试应用程序。我正在尝试根据它的值更改表格单元格的变体。不幸的是,变体参数不会采用函数,所以我不知道如何实现这一点。

这是我的代码:

var app = new Vue({
    el: '#app',
    data: {    
        items: [],      //Will be populated through AJAX
        fields: [
        {              
            key: 'Vendedor',
            label: 'Vendedor'                 
        },       
        {              
            key: 'OBJETIVO',
            label: 'Objetivo',
            formatter: (value) => { return parseFloat(value).toFixed(2)},
            variant: estiloObjetivo //THIS IS NOT WORKING
        }
      ]
    },
    methods: {
        Cargar: function () {
            var salesperson = getCookie('salespersonCode');
            var url_servicio = 'http://MywebService/';
            var self = this;
            $.ajax({
                type: 'GET',
                url: url_servicio + 'ventas/' + salesperson,
                dataType: "json", // data type of response                  
                success: function(data){            
                    self.items = data           
                }
            });
        },
        estiloObjetivo (value) {
                if value > 0 //I need my cell variant to change depeding on this value
                 return 'danger'
                else 
                 return 'success'

        }
    }
})

这是我的 HTML 部分:

<div id="app">  
    <button v-on:click="Cargar">Cargar</button>
    <b-table striped hover :fields="fields" :items="items"></b-table>
</div>

关于如何动态设置 Bootstrap-vue 单元格样式的任何想法?

这是它在文档中完成的方式,它实际上是在“items”数组中设置的,但是这在像我这样从网络服务获取数据的情况下有什么用?:

{
    salesperson: 'John',
    Objetivo: 2000,
    _cellVariants: { salesperson: 'success', Objetivo: 'danger'}
  },

所以我想我需要的是一种设置方法,我需要的是设置 'items' 数组中每个元素的 _cellVariants 参数。

最佳答案

您可能需要 computed property .计算属性会根据它们所依赖的 react 变量的变化自动更新。

以下示例实现了一个计算属性 styledItems,您必须使用它来代替模板中的 items。它返回 items1-deep 副本,即包含每个项目副本的新数组,并添加了额外的 _cellVariants 属性。

new Vue({
      data: {
        items: [ /* your data here */ ]
      },
      methods: {
        estiloObjetivo: value => (value > 0) ? 'danger' : 'success'
      },
      computed: {
        styledItems() {
          return this.data.map(datum =>
            Object.assign({}, datum, {
              _cellVariants: {
                Objetivo: this.estiloObjetivo(datum.Objetivo)
              }
            })
          }
        })

关于javascript - Bootstrap-vue - 动态设置表变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54065530/

相关文章:

javascript - 当文本框输入为空时显示警报

jquery - 自定义图标(加号圆和减号圆)在默认扩展面板上不起作用 - Bootstrap

javascript - VueJS : unable to update a component property from inside a watcher

javascript - Vue.JS 中回调错误位置的意外文字

typescript - 在 Vuejs 类 Component 中声明 typescript 接口(interface) Props

javascript - 在 Javascript 中返回一个对象并将对象作为参数

javascript - 将父单元格 ID 存储在列表中

twitter-bootstrap - 为什么Bootstrap的text-decoration :none not work?

jquery - Bootstrap 日期选择器 - 仅启用每个月的所有星期一

javascript - 为什么 XMLHttpRequest 对象的属性只能通过 console.log() 打印?