最近在用Vue.js 请问怎么实现列表每个元素都有的一个回复表单

发布于 2022-09-01 23:27:59 字数 994 浏览 12 评论 0

有这么一个列表页:

clipboard.png

对应的VM是这样的:

    var listModel = new Vue({
        el: '#listPage',
        data: {
            list: []
        },
        methods: {
            // 加载数据
            more: function() {
                var that = this;
                APP.ajax('post/list', {}, function(ret){
                    if (!that.list.length) {
                        that.list = ret.data;
                        return;
                    }
                    // ...
                }, true);
            },
            // 回复
            reply: function() {

            }
        }
    });
    // 第一次自动加载
    listModel.more();

那么问题来了,我该怎么实现每一个帖子下面都有的那个回复输入框?

如果给listModel加个属性比如replyContent
然后把每个回复输入框都绑定到这个属性,
那用户在其中一个回复框输入内容,
所有的回复框内容都会跟着变。。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

在风中等你 2022-09-08 23:27:59

我自己解决了,
因为是个无限列表,并没有用Vue.js的组件功能,怕影响性能,
最后我用了点 Zepto 的方法搞定的。
部分代码如下:

<div class="ui-input-wrap">
    <div class="ui-input ui-border-radius">
        <input type="text" placeholder="我也说一句...">
    </div>
    <button class="ui-btn" @tap="reply($event, item.id, $index)">回复</button>
</div>
reply: function(eve, pid, idx) {
    var that = this;
    var iptEle = $(eve.target).parent().find('input');
    var reMsg = iptEle.val().trim();

    APP.ajax('post/reply', {
        post_id: pid,
        content: reMsg
    }, function() {
        that.list[idx].reply_new.push({
            _user: APP.user,
            msg: reMsg
        })
        iptEle.val('');
    }, true);
}
可是我不能没有你 2022-09-08 23:27:59

两种方案

  1. 回复信息做成数组,实现双向绑定

  2. 回复信息不进行数据绑定,在提交时实现获取回复内容的业务逻辑

晚风撩人 2022-09-08 23:27:59

最近一直在做回复这个功能,求给思路。要用到什么框架,万分感谢

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文