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语法,循环变量没问题
如果我使用 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>
我是运行这个代码:
<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语法,循环变量没问题
如果我使用 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>