代码之家  ›  专栏  ›  技术社区  ›  Razinar

避免在Vue中的数据分配上进行双向数据绑定。js公司

  •  1
  • Razinar  · 技术社区  · 6 年前

    我有一个vue实例:

        var vue = new Vue({
          el: '#vue-wrapper',
          data: {
            items: [],
            selectedItem: ''
        })
    

    我使用来自phoenix服务器的数据初始化项目,如下所示:

    vue.items = <%= raw(@stories) %>
    

    加载页面后,我想选择第一个项目作为起始项目:

    vue.selectedItem = vue.items[0]
    

    我的html中有一个绑定到对象标题属性的输入字段

    <input type="text" v-model="selectedItem.title"></input>
    

    数据绑定工作正常,问题是项[0]正在与selectedItem一起更新,我不想要它。 我所尝试的:

    var x = vue.items[0];
    vue.selectedItem = X;
    

    仍然具有约束力,

    var x = <%= raw(@stories) %>
    vue.items = x[0]
    vue.selectedItem = x[0]
    

    仍然具有约束力,并且:

    vue.selectedItem = Object.assign({}, vue.items[0]);
    

    对象之间仍然存在绑定。 如何仅为selectedItem获取双向数据绑定?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Tomasz Kostuch    6 年前

    我在JSFIDLE和Object中复制了您的案例。assign工作得很好。

    var vue = new Vue({
          el: '#vue-wrapper',
          data: {
              items: [{
                title: 'title-item'
              }],
              selectedItem: ''
          }
        })
    
        vue.selectedItem = Object.assign({}, vue.items[0])
    

    https://jsfiddle.net/50wL7mdz/107302/