您在哪里正确地将本地功能放在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 ;
}
..但这些案例的一般方法更好:)
答案 0 :(得分:0)
现在这个函数看起来不像实用程序或辅助函数,而是与状态Status.Rows
相关。如果我是你,我会将其定义为接近状态或正在使用的状态的模块。
如果状态将在整个应用中使用,我可能会在条目文件index.js
或app.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)
}
}
})
您可以将所有代码放在一个操作中,这只是一个想法,如何根据您的需要组织代码。