weex.js - 如何将循环变量传递给事件处理程序

weex.js - how to pass the loop variable into event handler

我是运行这个代码:

<template>
    <div>
        <text onclick="log(items[0])">outside the loop</text>
        <div repeat="item in items">
            <text onclick="log(item)">{{item}}</text>
        </div>
    </div>
</template>
<script>
    module.exports = {
        data: {
            items: ['foo']
        },
        methods: {
            log: function(item) {
                console.log(item);
            }
        }
    }
</script>

当我点击 "outside the lop" 时,我看到 foo,但是当我点击 "foo" 时,我看到 undefined。如何将循环变量传递给事件处理程序?

使用循环范围内可用的 $index 变量:

<div repeat="item in items">
  <text onclick="log(items[$index])">{{item}}</text>
</div>

这个demo在原生代码环境下是可以的(我用iOSWeexSDK测试过)。 可能是浏览器的bug。

对了,最新的WeexSDK可以使用vuejs语法,循环变量没问题

演示:http://dotwe.org/vue/658afd881a720ab0c877a5bb2d88b9f4

如果我使用 vue

<template>
    <div>
        <text @click="log(items[0],$event)">outside the loop</text>
        <div v-for="item in items">
            <text @click="log(item,$event)">{{item}}</text>
        </div>
    </div>
    </template>
    <script>
    module.exports = {
        data: {
            items: ['foo']
        },
        methods: {
            log: function(item,e) {
                console.log(item);
            }
        }
    }
    </script>