regularjs/regular

computed计算有没有办法只做一次

Closed this issue · 9 comments

我知道可以通过{@}表达式可以支持。

那在js中,有没有办法控制computed只执行一次。

有这样的一个需求,一开始是计算的,后面希望这个值能手动修改,不再计算

{
    config: function() {
        this.data.foo = ...;
    }
}

这种情况就不要用计算属性了,在config中手动求值,比如上例中的foo

@fengzilong ,你说的,我有想过,但是不想挂在data上面。

不知道还有没有其他的方案

不是很理解你的需求,明明可以很简单地实现,为什么不想挂在data上:sweat:

暂时没办法。 在定义计算字段的地方 设置 它的计算次数

@fengzilong ,是这样的:

我们的需求是类似excel那样的表格处理,计算的字段不放到data,就相当于模型归模型,界面归界面,计算的字段是归界面,不显示在模型里面的。

嗯,如果一定要用计算字段的话,按波神说的,暂时是无法实现了,可以考虑下是否有其他折衷的不使用计算字段的方式

@henryzp 我一般是在data中处理这些计算的字段,前缀加个_表示私有。目前没什么好的方法,用computed有时会耗性能的。
另外regular也没有模型的概念,data只是个数据存放地。我以前有个项目里按照比较严格的模型做过一次,发现这样反而会降低regular的灵活性,感觉目前前端没必要搞这么严格。

其实计算属性只是组件里无参方法的一种语法糖,让模板看起来简洁一些。

@rainfore ,确实是有这个问题。。

因为我做的需求的确实没办法。。

另外就是计算那个层面,我这边起码有30多个表达式的,然后当某个值改变时,这30多个表达式会同时计算的。

@leeluolee 不知道有没有好的建议。。。