iview中的render函数由于从别的组件中引入,所以this指向不正确问题解决方法

    现遇到以下问题,我在使用iview框架结合vue制作后台管理系统的时候,使用iview的table表格组件,打算把公共表头都写在一个文件里面,各个页面按需引用它。


公共表头的数据文件中


在某些页面去使用它

这个时候,我使用table中的 render函数去绑定页面方法的时候,总是报错,报not a function


报错的情况,打印this

打印this之后发现this指向了window,而不是vue实例:


this指向的不是vue实例,所以一直找不到方法

网上给得答案太少了,然后我就想到一个很不推荐的办法,把调用这个表头数据的页面中,把vue实例抛给window,我个人及其不推荐。

但是目前又无能为力。

方法如下:全局var一个变量,如selfs

全局var一个变量,如selfs

在此页面vue实例,钩子函数created中,将this抛给window。

迫不得已这样做

然后在回到表头那个文件中,render函数里面打印this或者window,会发现有了个叫做‘selfs’,里面就是此页面的vue实例:


window下面找到了vue实例

然后可以随意调用了。


很笨的办法,但是还算有效

后记:

    iview之前在table标签中有一个‘:context=’这个属性,是规定上下文的,这里存放对的this就可以改变被调用‘表头数据’文件中的this指向了。不知为何后来被废弃了;也有人说使用$refs方式,这种我不是没有试过,但是没起作用。

    这种办法我个人认为是很不规范的,如果路过的大神有更好的解决方案,跪求大神不吝赐教!

你可能感兴趣的:(iview中的render函数由于从别的组件中引入,所以this指向不正确问题解决方法)