【问题标题】:Optional nested properties and v-model可选的嵌套属性和 v-model
【发布时间】:2015-12-15 18:43:56
【问题描述】:

我有一个 Vue 组件,用于或者创建新项目更新数据库中的现有项目。我将数据中的项目初始化为空对象:

module.exports = {
    data: function() {
        return { item: {} };
    },
};

但是,我使用v-model 将字段与item 的嵌套属性相关联:

<input id="author" type="text" class="form-control" v-model="item.author">

这会产生警告:

[Vue warn]: Error when evaluating expression "item.author".

如果可能的话,我希望 告诉 Vue 如果它无法评估这个表达式,请不要担心。我希望 喜欢 避免显式声明 item 的每个属性并让我的 API 填充它。有没有办法做到这一点?

【问题讨论】:

    标签: javascript vue.js


    【解决方案1】:

    如果您可以让您的 API 向其传递一个属性名称数组,那么可以在遍历该数组时使用 $set:

    for (var i = 0; i < response.propertyNameListFromAPI.length; i++)
    {
         this.item.$set(response.propertyNameListFromAPI[i], null );
    }
    

    或者,如果您有一个现有的项目对象,您可以迭代其属性名称:

    for (var propertyName in exampleItemObject )
    {
         this.item.$set(propertyName, exampleItemObject[propertyName] );
    }
    

    【讨论】:

      【解决方案2】:

      您可以禁止所有 Vue.js 日志和警告,但不能禁止特定警告。

      Vue.config.silent = true
      

      【讨论】:

      • 我希望更多像 v-model="item ? item.author : null" 这样的东西来防止错误而不是抑制它(我相信它已经投入生产了)。
      猜你喜欢
      • 2018-06-13
      • 2021-09-23
      • 2020-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 2018-01-09
      • 2018-09-03
      相关资源
      最近更新 更多