MorJS 中如何正确绑定 input 的值?

程序猿宁宁 阅读 44

我在用 MorJS 写一个表单页面,想把 input 的值和 data 里的变量双向绑定,但试了好几种写法都不生效。官方文档说用 value=”{{inputValue}}”,可我输入内容后 data 里的值根本没变,是不是还要加别的属性?

这是我的代码:

<template>
  <view>
    <input type="text" value="{{inputValue}}" />
    <text>当前值:{{inputValue}}</text>
  </view>
</template>

<script>
export default {
  data: {
    inputValue: '初始值'
  }
}
</script>
我来解答 赞 5 收藏
二维码
手机扫码查看
2 条解答
一泽 Dev
问题在于MorJS的input需要绑定onInput事件手动更新data。改成这样:

<template>
<view>
<input type="text" value="{{inputValue}}" onInput="handleInput" />
<text>当前值:{{inputValue}}</text>
</view>
</template>

<script>
export default {
data: {
inputValue: '初始值'
},
handleInput(e) {
this.setData({
inputValue: e.detail.value
})
}
}
</script>
点赞 1
2026-03-10 02:02
程序员文君
MorJS 里 input 的双向绑定得靠 bindinput 事件手动同步,它不像 Vue 那样自动双向绑定。你只写了 value="{{inputValue}}",那只是单向绑定——数据变 UI 变,但用户输入不会回写到 data 里。

你得加上 bindinput 监听输入事件,然后把值赋回去,比如这样:





注意 onInputChange 里要用 this.inputValue = ...,别用 this.setData(MorJS 不是小程序,没这玩意),直接改 data 里的字段就行。我之前也踩过这坑,以为它跟 WePY 或 Taro 一样自动同步,结果查了源码才发现它底层就是个很原始的 MVVM 框架,没做自动同步逻辑。
点赞 5
2026-02-25 01:01