Vue 2.0,放置本地功能的地方

时间:2018-03-07 09:15:45

标签: javascript vuejs2

您在哪里正确地将本地功能放在vue 2.x?

我可以把它们放在"方法"对象,但如果可能的话,我希望它们对实例完全是本地的。

在Plain JS中这样排序:

window._global = (function () {
  function _secretInsideFunct(){
    return "FooBar";
  }

  var __localObject = {
    outsideFunct : function () {
      return _secretInsideFunct();
    }
  }
return __localObject;
}());

.. _global._secretInsideFunct()无法在其他任何地方访问,而是从_global对象内部访问。

在这个特定的情况下,我想创建一个创建数组对象的函数,如果它不存在的话。像:

function CreateOrSet (workArray, itemName, itemValue ){
                        var salaryRow = self.Status.Rows.find(r => r.recordID == itemName);
                        if (!salaryRow) {
                            salaryRow = { recordID: itemName, recordAmount: 0, recordName: "Løn" };
                            self.Status.Rows.push(salaryRow);
                        }
                        salaryRow.recordAmount = itemValue ;
}

..但这些案例的一般方法更好:)

1 个答案:

答案 0 :(得分:0)

现在这个函数看起来不像实用程序或辅助函数,而是与状态Status.Rows相关。如果我是你,我会将其定义为接近状态或正在使用的状态的模块。

如果状态将在整个应用中使用,我可能会在条目文件index.jsapp.vue中对其进行定义。

或者如果您使用的是vuex,则可以将其定义为vuex action。所以你可以这样做:

const store = new Vuex.Store({
  state: {
    status: {
      rows: []
  },
  mutations: {
    pushRow (state, salaryRow) {
      state.status.rows.push(salaryRow)
    },
    changeAmount (state, id, amount) {
      const salaryRow = state.status.Rows.find(r => r.recordID === id)
      salaryRow.recordAmount = amount
    }
  },
  actions: {
    createRow (context, itemName) {
      const salaryRow = { recordID: itemName, recordAmount: 0, recordName: "Løn" };
      context.commit('pushRow', salaryRow)
    }
  }
})

您可以将所有代码放在一个操作中,这只是一个想法,如何根据您的需要组织代码。