收藏
回答

关于wxs作用域,是我理解错误还是文档描述错误?

问题模块
API和组件

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 会被执行两次

最后一次编辑于  2017-09-01  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

2 个回答

  • 张凯
    张凯
    2017-09-01

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


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


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

    2017-09-01
    赞同
    回复
  • Cage
    Cage
    2017-09-01

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


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

    console.log(1);


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

    2017-09-01
    赞同
    回复