I have multi Vue files that share the same string validation check logic like:
data(){
return {
dialog: false,
unitEditing:{},
codeRules:[
v => !!v || 'can't be empty',
v => !(/\s/g.test(v)) || 'can't contain space'
],
idRules:[
v => !!v || 'can't be empty',
v => !(/\s/g.test(v)) || 'can't contain space',
v => (this.unitEditing.platform != "unity" || (v=="video" || v=="rewardedVideo")) || "placement for unity should only be video or rewardedVideo"
],
}
},
I think it would be nice that I make a utils file (../utils/miscUtils.js
) for this:
var MiscUtils = {
rules: {
codeRules:[
v => !!v || 'can't be empty',
v => !(/\s/g.test(v)) || 'can't contain space'
],
idRules:[
v => !!v || 'can't be empty',
v => !(/\s/g.test(v)) || 'can't contain space',
v => (this.unitEditing.platform != "unity" || (v=="video" || v=="rewardedVideo")) || "placement for unity should only be video or rewardedVideo"
],
}
}
export default MiscUtils;
So that I could use:
import MiscUtils from '../utils/miscUtils'
...
data(){
return {
dialog: false,
unitEditing:{},
codeRules:MiscUtils.rules.codeRules,
idRules:MiscUtils.rules.idRules
}
},
But the thing is that we are referring this.unitEditing
in our check rules. I also tried
idRules:MiscUtils.rules.idRules.bind(this)
And it says that MiscUtils.rules.idRules
is not a function so can not bind.
How can I achieve this?