鍍金池/ 問答/HTML5  HTML/ vue項目,項目中有一些代碼邏輯是相同的,寫法也相同,我怎么把他封裝成一個公用的

vue項目,項目中有一些代碼邏輯是相同的,寫法也相同,我怎么把他封裝成一個公用的方法,完成不同的功能??次以敿?xì)描述。

1、vue項目,其中在用戶中心設(shè)置中調(diào)用本地接口這一塊有很多相同之處,
2、例如:
在配置發(fā)送消息快捷鍵上,我們的接口有添加本地配置更新本地配置,當(dāng)我要設(shè)置發(fā)送消息快捷鍵時,我需要判斷一下如果本地有這個配置那么使用更新本地配置接口,在成功回調(diào)中也要做不同的操作。還有配置好友上線聲音提醒等許多也是這樣的操作,目前我是各自寫個各自的,但是我覺得這樣寫有點重復(fù)搬磚的意思,我該怎優(yōu)化我的代碼。
3、

setSendMsgKey(action, val, keyName){
      console.log(action, 'action'); // action要調(diào)的接口名
      let tempVal = val;
      if(val == '0') tempVal = 'CTRL_ENTER';
      if(val == '1') tempVal = 'ENTER';
      let setSendMsgKeyCB = resp => {
        console.log(resp, '配置用戶發(fā)送消息快捷鍵');
        if(resp.code == 0){
          this.$store.commit('SET_USER_LOCALCONFIG', { key: 'send_msg_key', value: tempVal });
          if(action == 'addLocalSetting') this.$store.commit('SET_USER_LOCALCONFIG', { key: keyName, value: true });
        }
      }
      if(action == 'addLocalSetting'){
        this.$Service.user.addLocalSetting(
          [{ key: 'send_msg_key', value: tempVal }],
          setSendMsgKeyCB
        )
      } else {
        this.$Service.user.updateLocalSetting(
          [{ key: 'send_msg_key', value: tempVal }],
          setSendMsgKeyCB
        )
      }
    },
回答
編輯回答
久舊酒

1.封裝成公共的方法,放到utils里,像樓上說的那樣
2.擴展vue原型對象
3.mixins

2017年3月7日 17:15
編輯回答
壞脾滊

建議新建 util.js存放自定義公共方法, 需要的時候import調(diào)用

或者將方法定義在一個對象內(nèi)

const util = {
    setSendMsgKey: function(action, val, keyName) {}
}
Vue.prototype.util = util

調(diào)用

this.util.setSendMsgKey(action, val, keyName)
2017年3月2日 07:17
編輯回答
掛念你

把回調(diào)也作為參數(shù)傳入

Vue.prototype.$setSendMsgKey= function(action, val, keyName,setSendMsgKeyCB){
    ...
}

以后用的時候用

this.$setSendMsgKey(.. , resp => {
    ...
})

是這個意思嗎

2017年2月2日 22:08