如何在微信迷你程序中使用变量作为索引' setData函数?

时间:2017-04-08 06:11:39

标签: wechat

我喜欢使用listenSwiper捕捉swiper模块中的滑动,更改当前项目样式的上一个和下一个项目。

  listenSwiper: function(e) {
    var prev = 'items['+(e.detail.current-1)+'].x'
    var now = 'items['+(e.detail.current)+'].x'
    var next = 'items['+(e.detail.current+1)+'].x'
    console.log(prev)
    console.log(now)
    console.log(next)
    this.setData({
      prev:12,
      now:0,
      next:-12,
    })
  },

问题不是将prevnownext识别为变量,而是将setData作为字符串处理,这意味着它在现有数组中添加了三个新键而不是修改这样的数组:

this.setData({
  'items[0].x':12,
  'items[1].x':0,
  'items[2].x':-12,
})

1 个答案:

答案 0 :(得分:0)

在ES5或更早版本中,您不能将变量用作对象文字中的属性名称。您唯一的选择是执行以下操作:

url = "http:/foo.com"
<table>
    <form action="showtree.jsp" method="post" id="form" name="form">
        <input type="hidden" id="sortAction" name="sortAction" value="">
        <tr>
            <td style="text-align: right;font-weight:bold;">State:&thinsp;</td>
            <td><select name="state">
                <option value="ca">CA</option>
                <option value="or">OR</option>
                <option value="al">AL</option>

                </select></td>
        </tr>
        <tr>
            <td style="text-align: right;font-weight:bold;">Populartion:&thinsp;</td>
            <td><select id="pop" name="population" onchange="disableShowOnAll()">
                <option value="100">100</option>
                <option value="200">200</option>
                <option value="300">300</option>


                </select></td>
        </tr>
        <tr>
            <td></td>
            <td>
                <button id="showbutton" class="btn btn-default" onclick="submitForm('show')">Show Tree
                </button>
            </td>
        </tr>
    </form>

在ES6中,您可以使用ComputedPropertyName。你可以这样做:

var data = {};
data[prev] = 12;
data[now] = 0;
data[next] = -12;
  

类似的问题:Using a variable for a key in a JavaScript object literal