Framework7 + Angular 开发问题解决汇总

Stella981
• 阅读 532

本篇主要汇总一下使用Framework7 + Angular 开发中遇到的一些难点及我的解决方法,以后再遇到会在这里继续更新。

一、页面表格按需加载

情况描述:默认加载10条,在用户上拉页面是再进行下一页的内容加载。

解决方法:利用Framework7 的无限滚动。

1、页面:

<tbody id="orderContent">
     <tr ng-repeat="order in orderInfoList">
         <td><span ng-if="order.orderNo == null">--</span><span ng-if="order.orderNo != null">{{order.orderNo}}</span></td>
         <td><span ng-if="order.orderType == null">--</span><span ng-if="order.orderType != null">{{order.orderType}}</span></td>
         <td><span ng-if="order.completeStatus == null">--</span><span ng-if="order.completeStatus != null">{{order.completeStatus}}</span></td>
         <td class=" ">
             <button class="btn btn-primary btn-xs" ng-click="selectOrderInfoDetailModel($index);">详情</button>
             <button class="btn btn-warning btn-xs" ng-click="deleteOrderInfoDetailModel($index);">删除</button>
         </td>
      </tr>
</tbody>

将后面加载的内容插入到 id="orderContent" 的 tbody 中。

2、js(只显示关键代码,其他用省略号代替):

            ......
            $scope.queryParam = {};
            
            ......
            // 初始化分页参数
            $scope.pgPageInfo = {
                pageNum: 1,
                pageSize: 20
            };
            // 初始化 无限加载 参数
            var $$ = Dom7;
            var loading = false;

            $$('.infinite-scroll').on('infinite', function () {
                moreOrderInfo();
            });

            function moreOrderInfo() {
                var lastLoadedIndex = $$('#orderContent tr').length;

               ......

                // 全部内容加载完后,显示底线,return
                if (lastLoadedIndex >= $scope.pgPageInfo.total) {
                    $('#orderNomore').show();    
                    return;
                }

                var param = $scope.queryParam;  // 查询参数
                param.pageInfo = {
                    pageNum: $scope.pgPageInfo.pageNum + 1,
                    pageSize: 20
                };           
                    
     PiecesListFactory.queryOrderInfoRequest(param).then(function (data) {
                    loading = false;

                    app.myApp.hideIndicator();

                    ModalFactory.hideLoading();
                    if (null == data) {
                        app.myApp.detachInfiniteScroll($$('.infinite-scroll'));
                        $$('.infinite-scroll-preloader').remove();
                    } else {
                        $scope.pgPageInfo = data.pageInfo;

                        var orderHtml = "";
                        for (var i = 0; i < data.result.length; i++) {
                            // 循环data.result,得到拼接的orderHtml 
                        }
                 
                        $('#orderContent').append(orderHtml); // 将加载的内容插入到页面

                        lastLoadedIndex = $$('#orderContent tr').length;

                    }

                }, function (data) {
                    app.myApp.hideIndicator();
                    ModalFactory.alert("数据加载失败!");
                });
            }

3、还有一个地方,就是在angular初始化的时候,要对列表内容块加上Framework7 的滚动监听

           var init = function () {
                
                app.myApp.attachInfiniteScroll($$(".infinite-scroll"));

            };
            init();

二、页面中 angularJS 动态加载的内容,ng-click 无效

情况描述:完成了上面的列表内容动态加载,又遇到了一个问题,如果加载的内容不触发事件,就完事了,可是我这里,列表有个操作(详情,删除),所以之后发现动态加载的内容中 angularJS 的 ng-click 无效。。。

解决方法:用 $compile服务 编译一下动态加载的内容。

将上面的    $('#orderContent').append(orderHtml);   中的动态内容 orderHtml 处理一下::

var orderLink = $compile(orderHtml);
$('#orderContent').append(orderLink($scope));
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
JS 苹果手机日期显示NaN问题
问题描述newDate("2019122910:30:00")在IOS下显示为NaN原因分析带的日期IOS下存在兼容问题解决方法字符串替换letdateStr"2019122910:30:00";datedateStr.repl
Stella981 Stella981
2年前
Django之Django模板
1、问:html页面从数据库中读出DateTimeField字段时,显示的时间格式和数据库中存放的格式不一致,比如数据库字段内容为2012082616:00:00,但是页面显示的却是Aug.26,2012,4p.m.答:为了页面和数据库中显示一致,需要在页面格式化时间,需要添加<td{{dayrecord.p\_time|date:
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这