关于wxs作用域,是我理解错误还是文档描述错误?
发布于 5 年前 作者 xiulanduan 18375 次浏览 来自 问答

wxs-模块 这个页面最下面的注意里第一条:

<wxs> 模块只能在定义模块的 WXML 文件中被访问到。使用 <include> 或 <import> 时,<wxs> 模块不会被引入到对应的 WXML 文件中。

但在实际使用时发现 include 的 wxml 中是可以直接访问定义在使用include标签的WXML里的wxs的

<!-- index.wxml -->
<wxs module="test">
  module.exports = {
    foo: 'foo',
    bar: function() {
      return 'bar+++';
    }
  };
</wxs>
 

<view>

  {{test.foo}}
</view>
 
<include src="test.wxml" />
 
<!-- test.wxml -->
 
<view>
  <!-- 这里会显示 bar+++ -->
  {{test.bar()}}
</view>

而且,使用 .wxs 定义的模块,在使用 wxs标签引入的时候,里面的js 会被执行两次

2 回复

多谢回复,刚好是两个不同方向的解读,文档其实可以描述的更详细点;

执行两次的问题确实遇到了,直接在一个 wxs 文件里

console.log(1);

然后引入这个wxs,会在控制台看到两个输出

我觉得文档上的描述是正确的。它的意思是说你去include一个wxml的时候,如果这个被include的wxml里面定义了wxs模块,那它在执行include的那个wxml里是不能被访问到的。

而你的这个例子中,其实并不是这种情况。你在index.wxml中include了test.wxml文件,include的作用是相当于把你test.wxml中的模板部分内联进index.wxml中。

另外特地试了下,js执行两次的问题我也没出现。

回到顶部