javascript - 从选定的下拉列表中获取值 Vue Js

标签 javascript vue.js vuejs2 vue-component

我有一个问题,我真的很困惑如何从表单绑定(bind) vue js 中获取值。我已经尝试过 --> https://v2.vuejs.org/v2/guide/forms.html#Select 。但我总是收到错误,例如 --> “选定的”属性或方法未在实例上定义,而是在渲染期间引用。确保在数据选项中声明响应式(Reactive)数据属性。我的代码有什么问题吗?

这是我的代码:

data: function() {
  return {
    data: {
      options: {},
      selected: ''
    }
  };
},
methods: {
  Search: function() {
    var vm = this;

    var types = [
      {
        "id": "id",
        "value": "ID"
      },
      {
        "id": "title",
        "value": "Title"
      },
      {
        "id": "category",
        "value": "Category"
      },
      {
        "id": "username",
        "value": "Nama User"
      }
    ];

    vm.data.options = types;

    console.log(vm.data.selected);
  }
}

这是我的 html 代码:

<select v-model="selected" class="form-control sl">
    <option v-for="option in data.options" v-bind:value="option.id">
        {{ option.value }}
    </option>
</select>

最佳答案

方法不能以这种方式使用,并且您实际上根本不需要任何方法来获取。这是一个有效的示例:

const app = new Vue({
  el: '#app',
  data: {
    selectedOption: undefined,
    chosenColor: 'transparent',
    colorMappings: {
      ID: 'red',
      Title: 'green',
      Category: 'blue',
      'Nama User': 'orange'
    },
    widthMappings: {
      ID: '2px',
      Title: '4px',
      Category: '6px',
      'Nama User': '8px'
    },
    types: [
      {
        "id": "id",
        "value": "ID"
      },
      {
        "id": "title",
        "value": "Title"
      },
      {
        "id": "category",
        "value": "Category"
      },
      {
        "id": "username",
        "value": "Nama User"
      }
    ]
  },
  watch: {
    selectedOption(newVal) {
       this.chosenColor = this.colorMappings[newVal]
    }
  },
  computed: {
    chosenWidth() {
      return this.widthMappings[this.selectedOption] || '1px'
    }
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.2/vue.js"></script>
<div id="app">
  <select v-model="selectedOption">
    <option disabled value="">Please select one</option>
    <option v-for="type in types" v-bind:value="type.value">{{type.value}}</option>
  </select>
  <span v-bind:style="{ 'background-color': chosenColor, 'border': 'solid ' + chosenWidth + ' black' }">Selected: {{ selectedOption }}</span>
</div>

关于javascript - 从选定的下拉列表中获取值 Vue Js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45791155/

相关文章:

javascript - 错误 [Vue 警告] : v-bind without argument expects an Object or Array value

css - webpack:在 vue 应用程序选择器下确定所有 SCSS 的范围

javascript - 在 Vue.js 应用程序中使用一个组件中的代码(函数/模板)到另一个没有直接关系的组件中

vue.js - 在 Nuxt 中将多个新路径扩展到单个页面

Javascript - 根据封闭的 TD 内容隐藏表格行

javascript - 当帖子正文内容为 JSON 但响应为 HTML 时,发出 jquery ajax post 请求

javascript - 不显示线路连接器但显示端点

javascript - 以编程方式确定要在 Web 导航栏中显示多少元素

javascript - 表单未居中对齐(垂直居中/居中)

angularjs - VueJS 动态设置元素属性