【问题标题】:Vuejs Input Binding Based on Array of Computed Properties基于计算属性数组的 Vuejs 输入绑定
【发布时间】:2018-05-28 02:36:12
【问题描述】:

我有一个场景,我希望输入字段的 v-model 绑定由计算属性返回的值决定。

请看下面的例子:

<!DOCTYPE html>
<html>
<head>
<script src="https://unpkg.com/vue@2.1.10/dist/vue.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />  
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
<div id="app">
    {{value}}
    <input type="text" v-model="myName.first">
    <input type="text" v-model="myName.second">
</div>
  <script>  
    new Vue({
        el:'#app',
        data:{
            value:{
                first: '',
                second: ''
            }
        },
        computed: {
            myName: {
                get(){
                    return {first:'this.value.first',second:'this.value.second'};  //this will actually come from an API
                },
                set(newValue){
                    this.value.first = newValue.second;
                    this.value.second = newValue.second;
                }
            } 
        }     
    });
  </script>
</body>
</html>

正如您在上面的代码中看到的,我希望第一个字段绑定到 value.first,第二个值绑定到 value.second。对于这两个字段,我希望模型绑定由计算属性返回的值决定。现在这是一个简单的例子,只有两个返回值,即 value.first 和 value.second。但这将取决于逻辑。

我觉得我没有正确使用 get 和 set。非常感谢任何帮助。

注意:我在类似的行中有一个先前的问题,但它在计算属性中只返回一个值,而不是数组/对象。提供的答案效果很好但是,这次的挑战是我们需要设置两个值。你可以在这里看到那个帖子:Vuejs Input Binding Based on Computed Property

【问题讨论】:

    标签: javascript vue.js vuejs2


    【解决方案1】:

    您可以直接对计算属性进行 v-model,而无需使用数据或 set/get。

    CodePen

    <input type="text" v-model="myName.first">
    
    data:{},
    computed: {
       myName: function() {
           return this.$store.state.myName; //or whatever your api is
       } 
    }     
    

    此外,请确保您的计算属性的值在您的输入加载之前存在。

    【讨论】:

    • 这可行,但我目前的问题有点不同。所以,我的 data() 中有一些名为 item 的属性。而我的计算属性实际上只是让我得到了这个“项目”中需要填充的属性的名称。因此,我最终希望根据计算属性返回的属性将值保存在“项目”下。请参阅此代码笔codepen.io/anon/pen/xpbNVR
    • 所以我想你会想做这样的事情:codepen.io/retrograde/pen/PEwgLQ?editors=1010#0
    猜你喜欢
    • 2018-05-27
    • 2018-05-30
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 2018-01-22
    • 2012-11-14
    相关资源
    最近更新 更多