Angularjs 与三方js插件配合使用,并通过模板动态解析angularjs 语法

简介: 在一个静态见面上做数据分析,由于前后端分离 前端使用Angularjs框架,后端使用RESTFUL,如图

在一个静态见面上做数据分析,由于前后端分离 前端使用Angularjs框架,后端使用RESTFUL,如图

A:在分页上遇到要使用三方分页插件


laypage

其使用方法如下:


var laypage;
layui.use('laypage',function(){
    laypage = layui.laypage ;
});
laypage.render({
    elem: 'pageDetail' //分页容器的id
    ,count: page.count //总页数
    ,skin: '#41cac0' //自定义选中色值
    ,theme: '#41cac0'
    ,curr: page.page
    //,skip: true //开启跳页
    ,jump: function(obj, first){
        if(!first){
            $scope.pro(obj.curr);
        }
    }
});

三方插件直接在app.controller中使用是无效的


var app = angular.module('datas',[]).controller('DatasController',function($scope,$http){
    //这里初始化是无效的,laypage undifined
   //var laypage;
   //layui.use('laypage',function(){ laypage = layui.laypage ; }); 

} 
angular.bootstrap(document,["datas"]);

Angularjs 如何调用三方插件 laypage,实现思路是既然在内部初始化无效,则使用外部初始化,并设置全局变量


var laypage;
layui.use('laypage',function(){
    laypage = layui.laypage ;
});
//TODO 关键点是通过这里向Controller传值laypage
app.value('laypage',laypage);
angular.bootstrap(document,['datas']); 
这样就可以在Controller内部通过 laypage.render() 方法调用laypage插件
$scope.page = function(){
    var page = $scope.condition;
    laypage.render({
        elem: 'pageDetail' //分页容器的id
        ,count: page.count //总页数
        ,skin: '#41cac0' //自定义选中色值
        ,theme: '#41cac0'
        ,curr: page.page
        //,skip: true //开启跳页
        ,jump: function(obj, first){
            if(!first){
                $scope.pro(obj.curr);
            }
        }
    });
}

B 关于模板解析

1,模板内容包含angularjs语法


<script type="text/template" id="template">
    <div class="treeview-item">
        <i class="btn-expand" action="toggleExpand" tag="{{tageId}}" ng-click="getChildTemplate($event)"></i>
        <span class="label-name" action="detailItem">{{tageName}} </span>
    </div>
    __CONTENT__
</script>

2,动态Html语法
 
var result = $("#template").html();
//todo 替换template中的值 
$("#templateItems").html(result);

3以上写法,由于template中包含ng-click 语法,执行网页动态脚本添加的时候,是已经编译过的网页内容,Angularjs无法识别到ng-click,则无法调用对应的方法,修改代码如下


$("#templateItems").html($compile(result)($scope));

原文发布时间为:2018年03月20日
原文作者:  ReSky 

本文来源:开源中国 如需转载请联系原作者


目录
相关文章
|
JavaScript 前端开发 Go
CSS 与 JS 对 DOM 解析和渲染的影响
【10月更文挑战第16天】CSS 和 JS 会在一定程度上影响 DOM 解析和渲染,了解它们之间的相互作用以及采取适当的优化措施是非常重要的。通过合理的布局和加载策略,可以提高网页的性能和用户体验,确保页面能够快速、流畅地呈现给用户。在实际开发中,要根据具体情况进行权衡和调整,以达到最佳的效果。
460 57
|
6月前
|
JavaScript 前端开发 开发者
JavaScript中的箭头函数:简洁的语法与this绑定
JavaScript中的箭头函数:简洁的语法与this绑定
492 184
|
Java
轻松上手Java字节码编辑:IDEA插件VisualClassBytes全方位解析
本插件VisualClassBytes可修改class字节码,包括class信息、字段信息、内部类,常量池和方法等。
838 6
|
9月前
|
JSON 前端开发 Serverless
Mock.js 语法结构全解析
Mock.js 的语法规范介绍,从数据模板定义规范和数据占位符定义规范俩部分介绍, 让你更好的使用 Mock.js 来模拟数据并提高开发效率。
|
11月前
|
设计模式 SQL Java
【再谈设计模式】解释器模式~语法的解析执行者
解释器模式定义了一种语言的语法表示,并定义一个解释器来解释该语言中的句子。它使用类来表示每个语法规则,并且通过递归调用这些类的方法来解释表达式。本质上,它将一个复杂的表达式分解为一系列简单的部分,然后按照特定的语法规则进行解析和执行。
312 8
|
11月前
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
11月前
|
消息中间件 JavaScript 前端开发
最细最有条理解析:事件循环(消息循环)是什么?为什么JS需要异步
度一教育的袁进老师谈到他的理解:单线程是异步产生的原因,事件循环是异步的实现方式。 本质是因为渲染进程因为计算机图形学的限制,只能是单线程。所以需要“异步”这个技术思想来解决页面阻塞的问题,而“事件循环”是实现“异步”这个技术思想的最主要的技术手段。 但事件循环并不是全部的技术手段,比如Promise,虽然受事件循环管理,但是如果没有事件循环,单一Promise依然能实现异步不是吗? 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您
|
JavaScript 前端开发 API
Vue.js响应式原理深度解析:从Vue 2到Vue 3的演进
Vue.js响应式原理深度解析:从Vue 2到Vue 3的演进
410 17
|
SQL 数据可视化 数据库
多维度解析低代码:从技术架构到插件生态
本文深入解析低代码平台,从技术架构到插件生态,探讨其在企业数字化转型中的作用。低代码平台通过图形化界面和模块化设计降低开发门槛,加速应用开发与部署,提高市场响应速度。文章重点分析开源低代码平台的优势,如透明架构、兼容性与扩展性、可定制化开发等,并详细介绍了核心技术架构、数据处理与功能模块、插件生态及数据可视化等方面,展示了低代码平台如何支持企业在数字化转型中实现更高灵活性和创新。
222 1
|
JavaScript 前端开发
JavaScript 函数语法
JavaScript 函数是使用 `function` 关键词定义的代码块,可在调用时执行特定任务。函数可以无参或带参,参数用于传递值并在函数内部使用。函数调用可在事件触发时进行,如用户点击按钮。JavaScript 对大小写敏感,函数名和关键词必须严格匹配。示例中展示了如何通过不同参数调用函数以生成不同的输出。

推荐镜像

更多
  • DNS