这是经常遇到的一个问题,之前没有注意,有一天进行code Review提了出来。
举个栗子:网上商城想要看商品的详情,就需要通过列表页点击,进入详情页。详情页的数据处理是通过传过来的商品Id获取信息进行绑定渲染。
如果不进行处理,多次打开详情页就会出现问题。
1、如果是在详情页的data中直接进行Id获取,
然后在create中进行数据获取,那么在不关详情页并多次打开详情页的时候,之后打开的详情页数据都是和第一页相同的,这是因为data是在$vm实例创建之前就会进行赋值,
而在第一次打开页面时,就已经创建了实例并对data进行赋值了,之后每次打开都不会再创建;
2、在create中获取传过来的Id,然后调用方法获取数据,这种情况其实和1、原理是差不多的;
3、使用activated(这是和keep-alive协同使用的一个属性,如果没有设置keep-alive ,activated是不存在的),并在activated中进行Id获取和数据方法调用。
activated和created什么区别呢?created是创建vm实例时执行,而activated更像是每次新打开