- 请问在js文件中能否重新import?
大家好,谢谢你们进来帮忙解决我的疑问。我的问题如下,最近希望做一个能切换中英文的小程序。 之前也从csdn上找到相关的方法,也是能成功使用。但是最近有一个新的想法,就是希望数据能独立管理。所以我写了一个单独的js文件来管理数据。 const app = getApp() const {gin,tonicWater,coke,sweetVermouth,campari,angosturaBitter,orangeBitter,whiskey,bourbon,rye,limeWedge,orangePeel,brandiedCherry,oz,dash,dashes} = app.globalData.content export const cocktails = [ {id:1, name: 'Gin and Tonic', difficulty:1, ingredients_vol:[2,6] , ingredients_unit:[oz,oz] , ingredients:[gin, tonicWater], garnish:limeWedge}, {id:2, name: 'Whiskey and Coke', difficulty:1, ingredients_vol:[2, 4], ingredients_unit:[oz, oz], ingredients:[whiskey, coke], garnish:limeWedge}, ] 然后在index.js里面调用这个文件 const app = getApp() import {cocktails} from '../data/cocktails' Page({ data: { cocktails, cocktail: cocktails[0], transformIdx: 0, position: 'center', duration: 300, show: false, overlay: false }, 但是每次我点击切换语言的时候,因为cocktails.js并没有获取新的语言信息,所以无法更新成新的语言。但是如果我切换语言后在开发者工具重新编译后,它却能显示正确的语言。所以我希望看看有没有能重新import的功能或者怎么样能够实现我这个想法。 谢谢你们!
2021-05-03 - js的function如何重复使用?
首先感谢你们点进来看。我的问题如下 有多个input的组建,每个都有一个bindinput的因为每一个input都有bindinput,而且他们的功能都是类似的,目前的情况就是我有大量重复使用的字段。Page({ data: { inputValue1:'', inputValue2:'', inputValue3:'', inputValue4:'', }, input1: function (e) { if (Math.abs(e.detail.value.length - this.data.inputValue1.length) != 1) { this.setData({ inputValue1: '' }) return '' } else { let reg = /^[0-9]*$/ if (!reg.test(e.detail.value)) { this.setData({ inputValue1: '' }) return '' } else { this.setData({ inputValue1:e.detail.value }) } } }, input2: function (e) { if (Math.abs(e.detail.value.length - this.data.inputValue2.length) != 1) { this.setData({ inputValue2: '' }) return '' } else { let reg = /^[0-9]*$/ if (!reg.test(e.detail.value)) { this.setData({ inputValue2: '' }) return '' } else { this.setData({ inputValue2:e.detail.value }) } } }, }) 如上述所见,每一个input的function其实只是改了inputValue1或inputValue2。所以我就想说能不能将他们集合到一个function里面。如下 checkInput: function (inputValue) { if (Math.abs(e.detail.value.length - this.data.inputValue.length) != 1) { this.setData({ inputValue: '' }) return '' } else { let reg = /^[0-9]*$/ if (!reg.test(e.detail.value)) { this.setData({ inputValue: '' }) return '' } else { this.setData({ inputValue:e.detail.value }) } } }, input1: function (e) { this.checkInput(this.data.inputValue1) }, input2: function (e) { this.checkInput(this.data.inputValue1) }, 但是上述的这个情况却报错了,以下的这个错误 ReferenceError: e is not definedy 因为我也算是新手,所以如有不好的地方请大家多多包涵。在这里也希望大家能帮我看看哪里有问题。好让我缩短代码长度。 再次拜谢! ------------------------------------ 试了一下楼下提醒我的,代码还是报错了。 input1: function (e) { this.checkInput(e, this.data.inputValue1) }, input2: function (e) { this.checkInput(e, this.data.inputValue1) }, 主要问题出在了这几个地方。 if (Math.abs(e.detail.value.length - this.data.inputValue.length) != 1) { this.setData({ inputValue: '' }) 这里第一行出现的是 this.data.inputValue.length 但是第三行出现的是 inputValue 如果我将第一行this.data.inputValue.length 换成 inputValue.length 代码就没有报错。 但是功能也实现不出来。 麻烦大家看看怎么解决比较好!辛苦大家了。 ----------------------- 最后在网上找到我想要的目标答案。 checkInput: function(e,input){ let reg = /^[0-9]*\.?[0-9]*$/ if (!reg.test(e.detail.value)) { this.setData({ [input]: '' }) return '' } else { this.setData({ [input]:e.detail.value }) } }, 只要input在 this.setData 里面框住就好了 在这里我想引出我的第二个问题。 能不能像动态选择 this.setData的key一样,动态选择this.setData的value 就是说有没有方法能实现类似的功能 this.setData({ [input]: this.data.input //但是这个input可以像key一样随着调用的名字改变而改变 }) return this.data.input 例如如果我调用 input1: function (e) { this.checkInput(e,'inputValue1') }, 然而 上面的代码会实现 this.setData({ inputValue1: this.data.inputValue1 }) return this.data.inputValue1 不知道我的问题是不是足够清晰。谢谢大家的帮忙!
2021-04-15 - if function里面 && 和 || 竟然出现一样的答案?
if (this.data.inputValue1!='' || this.data.inputValue2!='' || this.data.inputValue3!='' || this.data.inputValue4!='') { this.setData({ clsStatus: false }) } else { this.setData({ clsStatus: true }) } 以上就是我纠结了一晚上的代码。上面的代码是成功使用的。 如果任意一个inputValue不为空,都会变成false。 但是问题是我希望设置,如果任意一个inputValue为空,变成false。系统则不让我过。我也不知道什么原因。 我就是将上面的 || 换成 &&, 但是结果竟然还是一样的。 太奇怪了。 不知道别人有没有遇到一样的问题? 谢谢大家的时间!
2021-04-06