收藏
回答

template写了picker 在引用模板的页面setData 不能更新数据

问题模块
API和组件


index.wxml

< picker mode= "selector" bindchange= "bindPickerChange" value= "{{index}}" range= "{{array}}" >

<view class="picker" > {{array[index] }}</view>

< /picker>



index.js

Page({  data: {    array: ['请选择', '1','2'],    index: 0  },  onLoad: function () {    },  bindPickerChange: function (e) {    var that = this;    that.setData({      index: e.detail.value    })    console.log(that.data.array[that.data.index]);  } })


在页面中这样写,点击后就可以更新选项



这个picker有很多地方要用,当我想把这个picker提取为template时

template.wxml

<template name="part">

< picker mode= "selector" bindchange= "bindPickerChange" value= "{{index}}" range= "{{array}}" >

<view class="picker" > {{array[index] }}</view>

< /picker>

<template< span=""></template></template<>


index.wxml

<import src="part.wxml" />

<template is="part" data="{{array}}"></template>


index.js Page({  data: {    array: ['请选择', '1','2'],    index: 0  },  onLoad: function () {    },  bindPickerChange: function (e) {    var that = this;    that.setData({      index: e.detail.value    })    console.log(that.data.array[that.data.index]);  } })


在index.wxml页面点击picker后就获得不到数据了bindPickerChange 发生了改变,获取到了值,但是UI没更新。

但是 picker的range值 和 value 值  都获取到了, 只有UI 就是 {{array[index]}}没改变

只有在页面初始化的时候 {{array[0]}}{{array[1]}}或其他把索引写死的才能获取到值

点击后却不能获取到


我看了模板的官方文档

是这么解释:


模板的作用域

模板拥有自己的作用域,只能使用 data 传入的数据以及模版定义文件中定义的 模块。


所以是在不刷新页面的情况下   模板里面的事件不能提交数据到index.js后获取数据,然后获取到更新的数据 更新UI吗?


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

2 个回答

  • 赵青山
    赵青山
    2017-12-06

    <template is="part" data="{{array,index}}"/>

    2017-12-06
    赞同
    回复
  • 可乐不要气泡
    可乐不要气泡
    2017-12-11

    感谢楼上

    2017-12-11
    赞同
    回复