起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2399|回复: 6

[结贴] 数据绑定的问题

[复制链接]

123

主题

245

帖子

888

积分

高级会员

Rank: 4

积分
888
发表于 2018-2-24 16:04:38 | 显示全部楼层 |阅读模式
本帖最后由 wangjb 于 2018-2-24 16:08 编辑

我想实现新闻上下滚动的效果,找了个  jquery  的插件   jquery.bootstrap.newsbox.js   ,结果,效果是实现了,但遗憾的是  当数据上下滚动后, 绑定的数据   点击事件失效了,我
通过调试查看元素  ,发现绑定的点击事件存在,可就是不起作用,我本人对JS 也不是特别熟悉,请大侠帮帮我,我已经折腾了1天了。下面是我的代码以及说明:

1.png

2.png


3.png

5.png

6.png

代码源文件:
zxpt1.rar (16.31 KB, 下载次数: 133)
发表于 2018-2-24 18:17:32 | 显示全部楼层
运行时调试会发现  这两个 dom 节点会切换位置的!
也就是这个插件 进行了dom操作

WeX5 开发的应用 ko 绑定 是需要调用API 才可以生效的!
http://doc.wex5.com/comp-base/#2.2

而 插件 直接动态操作dom元素了,所以导致ko绑定失效了,  所以点击事件就失效了

如果是这样,建议换一种方法,动态给dom元素追加点击事件的方式实现!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

123

主题

245

帖子

888

积分

高级会员

Rank: 4

积分
888
 楼主| 发表于 2018-2-25 16:20:55 | 显示全部楼层
liangyongfei 发表于 2018-2-24 18:17
运行时调试会发现  这两个 dom 节点会切换位置的!
也就是这个插件 进行了dom操作

我不是很清楚KO  ,针对目前我的需求,你能帮我改改我的代码吗,谢谢
回复 支持 反对

使用道具 举报

发表于 2018-2-25 16:29:49 | 显示全部楼层
wangjb 发表于 2018-2-25 16:20
我不是很清楚KO  ,针对目前我的需求,你能帮我改改我的代码吗,谢谢

就是不要使用bind-click 事件了!
应该使用jquery 动态获取这个dom元素  ,并且动态给他绑定事件

比如 参考
http://blog.csdn.net/xiaozhi_2016/article/details/52184328

如果每次dom节点都是重新生成的, 那应该需要每次切换都给他绑定点击事件,才会不失效


或者你可以在外层的dom元素上绑定点击事件,外层的dom不会重新生成,那么点击事件就不会失效了额!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

123

主题

245

帖子

888

积分

高级会员

Rank: 4

积分
888
 楼主| 发表于 2018-2-25 21:40:39 | 显示全部楼层
liangyongfei 发表于 2018-2-25 16:29
就是不要使用bind-click 事件了!
应该使用jquery 动态获取这个dom元素  ,并且动态给他绑定事件

不好意思,这个问题还是没解决,
我这个项目,用户要求必须实现新闻的上下滚动效果。
按照你的方案,如果把点击事件放在不会重新生成的外层DOM 元素上,但点击事件里的当前行数据还有数据组件无法获取到,同样第二种方案 每次生成重新绑定事件,也是获取不到数据!!!

这个点击事件还是比较复杂,代码如下:
//  打开通知或者批示回复
        Model.prototype.li3Clickjjb = function(event) {
                // 1.打开之前 ,首先要对数据进行更新,设置状态,表示已经阅读过。
                var row = event.bindingContext.$object;

                // 对状态的数据库的更新操作留在了在详细打开任务的批示回复页面进行更新

                // 2.打开详细通知或者任务项目 或者回复的页面
                var taskOrProjectId = row.val("taskOrProjectId");
                var flag = row.val("flag");
                var taskType = row.val("taskType");

                this.comp("noticeData").setValue("status", 0, row);
                this.comp("noticeData").saveData();
                // flag 3 : 表示通知 1:表示任务 2:表项目
                if (flag == 3) {
                        // 打开系统通知页面

                        justep.Shell.showPage("systemNoticeDetail", {
                                "fid" : row.val("fid"),
                                "jjbflag" : row.val("jjbflag")
                        });

                } else if (flag == 1) {
                        if (taskType == 1) {
                                // 打开任务页面
                                justep.Shell.showPage("taskDetailShoucang", {
                                        "task_id" : taskOrProjectId
                                });
                        } else if (taskType == 2) {
                                // 打开任务页面
                                justep.Shell.showPage("taskDetailShoucangsfq", {
                                        "task_id" : taskOrProjectId
                                });
                        }

                } else {
                        // 打开项目页面
                        justep.Shell.showPage("projectDetailshoucang", {
                                "project_id" : taskOrProjectId
                        });
                }

        };







请问,还有什么好的方法,怎么才能使点击事件中的代码都能执行?

或许您还有什么比较好的方案,能够实现列表新闻的上下滚动,还不会失去KO 绑定操作

以下是我的真实项目的部分代码,不能执行(里边的baasdata代码没有拷贝),只有页面代码
zxpt1.zip (5.32 KB, 下载次数: 121)
回复 支持 反对

使用道具 举报

发表于 2018-2-26 09:42:23 | 显示全部楼层
wangjb 发表于 2018-2-25 21:40
不好意思,这个问题还是没解决,
我这个项目,用户要求必须实现新闻的上下滚动效果。
按照你的方案,如果 ...

可以在外层的dom元素上,点击事件中, 使用jquery.find 方法  获取 子节点的方式,获取到第一个li 下的dom元素即可!
获取到对应的dom元素后,   就能通过dom元素获取数据了
可以在dom元素上使用  bind-attr-myattr   自定义属性 绑定某个字段的值

最终通过 jquery 去获取 myattr  属性的值,然后就知道点击的是哪行数据了!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

123

主题

245

帖子

888

积分

高级会员

Rank: 4

积分
888
 楼主| 发表于 2018-2-26 11:45:35 | 显示全部楼层
liangyongfei 发表于 2018-2-26 09:42
可以在外层的dom元素上,点击事件中, 使用jquery.find 方法  获取 子节点的方式,获取到第一个li 下的do ...

谢谢,就这样解决了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-9-28 15:32 , Processed in 0.062535 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表