computed计算有没有办法只做一次
Closed this issue · 9 comments
henryzp commented
我知道可以通过{@}
表达式可以支持。
那在js中,有没有办法控制computed只执行一次。
有这样的一个需求,一开始是计算的,后面希望这个值能手动修改,不再计算
fengzilong commented
{
config: function() {
this.data.foo = ...;
}
}
这种情况就不要用计算属性了,在config中手动求值,比如上例中的foo
henryzp commented
@fengzilong ,你说的,我有想过,但是不想挂在data上面。
不知道还有没有其他的方案
fengzilong commented
不是很理解你的需求,明明可以很简单地实现,为什么不想挂在data上:sweat:
leeluolee commented
暂时没办法。 在定义计算字段的地方 设置 它的计算次数
henryzp commented
@fengzilong ,是这样的:
我们的需求是类似excel那样的表格处理,计算的字段不放到data,就相当于模型归模型,界面归界面,计算的字段是归界面,不显示在模型里面的。
fengzilong commented
嗯,如果一定要用计算字段的话,按波神说的,暂时是无法实现了,可以考虑下是否有其他折衷的不使用计算字段的方式
rainfore commented
@henryzp 我一般是在data中处理这些计算的字段,前缀加个_表示私有。目前没什么好的方法,用computed有时会耗性能的。
另外regular也没有模型的概念,data只是个数据存放地。我以前有个项目里按照比较严格的模型做过一次,发现这样反而会降低regular的灵活性,感觉目前前端没必要搞这么严格。
rainfore commented
其实计算属性只是组件里无参方法的一种语法糖,让模板看起来简洁一些。
henryzp commented
@rainfore ,确实是有这个问题。。
因为我做的需求的确实没办法。。
另外就是计算那个层面,我这边起码有30多个表达式的,然后当某个值改变时,这30多个表达式会同时计算的。
@leeluolee 不知道有没有好的建议。。。