Javascript 表达式在选中后已更改。第二期
模板:Javascript 表达式在选中后已更改。第二期,javascript,angular,Javascript,Angular,模板: <tbody> <tr> <td>{{getRand()}}</td> <td>{{getRand()}}</td> </tr> </tbody> getRand(){ return Math.floor(Math.random()*100); } Expression has changed after it was checked. Previous val
<tbody>
<tr>
<td>{{getRand()}}</td>
<td>{{getRand()}}</td>
</tr>
</tbody>
getRand(){
return Math.floor(Math.random()*100);
}
Expression has changed after it was checked. Previous value: '90'. Current value: '32'.
错误:
<tbody>
<tr>
<td>{{getRand()}}</td>
<td>{{getRand()}}</td>
</tr>
</tbody>
getRand(){
return Math.floor(Math.random()*100);
}
Expression has changed after it was checked. Previous value: '90'. Current value: '32'.
有人能解释为什么会发生这种错误吗?为什么我不能多次调用此方法?是否打开了服务器端渲染
不确定角度,但在React上,如果您有服务器端渲染,渲染值将在客户端重新计算,并会引发一些错误/警告。角度变化检测就是这样工作的 Angular中的更改检测算法在特定时间(某些事件)遍历组件树,以确定发生了哪些更改 然后根据模型更改和UI绑定更新UI 在开发模式下(查看和),此组件漫游执行两次,以确保更改后模型稳定。在您的情况下,用于绑定的函数并不是没有副作用的,因为每次调用该函数都会返回不同的值
根据经验,使用无副作用的绑定。是否有服务器端渲染?这可能是使用angular cli实现其所有前端的原因。我猜消化周期注意到它被改变了,并且认为这是一个错误,因为某种原因。啊,我明白了。我如何为一个长度不确定的数组生成随机数而不触发副作用呢?这本身并不会破坏任何东西。但是假设您只想生成一次这个随机数,那么最好在某种数组中的控制器中执行,然后绑定到数组。