1. 源码

<!DOCTYPE html>
<html> <head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="director-master/build/director.js"></script>
<script type="text/javascript" src="angular/angular.js"></script>
<script> /// 定义模块
var login=angular.module("mylogin",[]);
login.factory("dalongapp",function(){
return {
appname:"dalong demo",
appurl:"http://www.baidu.com"
};
});
/// 此处注入模块
var myapp=angular.module("YYIMApp",["mylogin"]);
myapp.run(function($rootScope,$templateCache){
alert("app is running")
$rootScope.dalongappdemo={
dalonginfo:"dalong demo",
daongage:33
}; $templateCache.put("applogin.html",'<div><h1>cache file info:</h1>{{username.appurl}}</div>')
});
/// 此处暴露共享的方法
myapp.controller("IMctrl",function($scope,dalongapp,$rootScope,$compile,$templateCache){
$scope.username={
appurl:"www.baidu.com"
};
$scope.onclickdemo=function(){ console.log(dalongapp);
console.log($templateCache);
var cachetemp=$templateCache.get("applogin.html");
console.log(cachetemp);
alert($scope.username.appurl+dalongapp.appname+$rootScope.dalongappdemo.daongage);
};
$rootScope.compileservice=function(ele,scope){
return $compile(ele)(scope);
} $scope.getcache=function(key){ return $templateCache.get(key); } $scope.cachelogindemo=function(){ }
$rootScope.safeApply=function(scope){
scope.$apply(); }
});
</script> <script>
/// 此处手工启动应用
angular.element("#dalongdemo").ready(function(){ angular.bootstrap(document.getElementById("dalongdemo"),["YYIMApp"]); })
</script>
<script>
function mess()
{
var content=$("#content");
var content2=$("#content2");
content.empty();
content2.empty();
first();
second();
}
function first()
{
$.get("myapp.htm",function(data){
var html=data;
var content=$("#content");
var content2=$("#content2");
var el=$(data);
console.info("appappend el");
//console.log(el);
//console.log(html);
//content.append(html); console.log(angular);
var appdalong=angular.element("#content");
console.log(appdalong)
scope= angular.element(document.getElementById("dalongdemo")).scope();
console.info("scope");
scope2= angular.element(document.getElementById("dalongdemo2")).scope(); // console.log(scope);
// console.log(scope2);
/// 动态编译模板并进行数据加载
var appinfo= scope.$parent.compileservice(el,scope)
content.append(appinfo);
scope.$parent.safeApply(scope);
// console.log(appinfo);
// console.log(angular.element(document.getElementById("dalongdemo")))
//
//angular.element("#YYIMApp").ready(function(){
//
// angular.bootstrap(document.getElementById("YYIMApp"),["YYIMApp"]);
//
// }) }); }
function second()
{
$.get("myapp1.htm",function(data){
var html=data;
var content=$("#content");
var content2=$("#content2");
var cachetemp=scope.getcache("applogin.html");
console.info("app demo");
console.log(cachetemp);
console.log(scope);
var compile=scope.compileservice($(cachetemp),scope.$new());
console.log(compile);
content2.append(compile);
scope.$parent.safeApply(scope);
// angular.element("#YYIMApp2").ready(function(){
//
// angular.bootstrap(document.getElementById("YYIMApp2"),["YYIMApp"]);
//
// })
}); }
function myappdemo()
{
var content=$("#content");
var content2=$("#content2");
content.empty();
content2.empty();
content.append('<p>dalong demo</p>') } var routes = { '/message': mess, '/appdemo':myappdemo
}; var router = Router(routes);
router.init();
</script> </head> <body>
<h1>dalong demo</h1> <a href="#message">message</a> <br>
<a href="#appdemo">myappdemo</a>
<h1>first</h1> <div id="dalongdemo" ng-controller="IMctrl"> <h1>{{dalongappdemo.dalonginfo}}</h1> <div id="content"> </div>
<h1>second</h1>
<div id="content2"> </div> </div> </body> </html>

2. ajax 请求的模板片段文件:

<div    id="YYIMApp">
<div ng-controller="IMctrl">
<h1 ng-bind="username.appurl">{{username.appurl}}</h1> <button ng-click="onclickdemo()">clickdemo</button>
</div>
</div>

原理解析:

主要是通过JavaScript 与angularjs 互调用并使用$compile 服务进行数据的动态渲染并添加DOM元素

价值:

可以方便的进行第三方框架与angularjs 的集成,如果使用ng-app 等指令可能会便捷性比较小。

Jquery使用ajax以及angularjs 动态模板加载并进行渲染的更多相关文章

  1. jquery实现表单验证与页面加载之后执行渲染

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. jQuery+php+Ajax文章列表点击加载更多功能

    jQuery+php+Ajax实现的一个简单实用的文章列表点击加载更多功能,点击加载更多按钮,文章列表加载更多数据,加载中有loading动画效果. js部分: <script type=&qu ...

  3. jQuery.ajax( options ) : 通过 HTTP 请求加载远程数据

    jQuery.ajax( options ) : 通过 HTTP 请求加载远程数据 这个是jQuery 的底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等. $.ajax() ...

  4. Angularjs 异步模块加载项目模板

    ng-lazy-module-seed(Angularjs 异步模块加载项目模板) 相信做过SPA项目的朋友都遇到过这个问题:页面初始化时需要加载文件太大或太多了,许多文件加载后很可能不会运行到,这是 ...

  5. angular模板加载 ----ng-template

    Angularjs作为mvc(或者说mvvm)框架,同样具备模板这一基本概念. NG加载模板的顺序为 内存加载---AJAX加载. 如果排版乱掉,请查阅https://www.zybuluo.com/ ...

  6. Java_动态重新加载Class总结

    在此记载Java动态重新加载Class的点点滴滴,实现之前也在网上看了很多文章,但发现不是很清晰,后来发现总结,看源码实现还是最靠谱. 直接上代码: package com.lkb.autoCode. ...

  7. Java_动态重新加载Class机制

    Java动态重新加载Class 项目中使用到了动态重新加载Class的机制,作用是让一些代码上线之前可以在线上环境测试一下,当然,这是非常不好的测试机制,我刚来的时候也为这种机制感到惊讶—怎么可以在线 ...

  8. Android系统下的动态Dex加载

    1 问题在Android系统中,一个App的所有代码都在一个Dex文件里面.Dex是一个类似Jar的存储了多有Java编译字节码的归档文件.因为Android系统使用Dalvik虚拟机,所以需要把使用 ...

  9. Android系统下的动态Dex加载与app速度优化

    1 问题 在Android系统中,一个App的所有代码都在一个Dex文件里面.Dex是一个类似Jar的存储了多有Java编译字节码的归档文件.因为Android系统使用Dalvik虚拟机,所以需要把 ...

随机推荐

  1. 多态-II(接口实现)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. 对前端mvc的认识和思考

    现在,我们经常都可以看到复杂的JavaScript应用程序,由于这些应用程序变得越来越复杂,一长串的jQuery回调语句或者通过应用程序在 各个状态执行不同的函数调用,这些做法都会变得无法再让人接受, ...

  3. ERP员工入职登记(五)

    在数据库中添加链接的地址:

  4. 步步入佳境---UI入门(3) --单视图控制器

    视图控制器特点//1,抽象  视觉上没有效果//2,负责控制视图的显示方式//3,负责通知视图的显示内容//4,ios平台赋予的,收到内存警告和检测设备旋转@interface CHViewContr ...

  5. XML HttpRequest

    XMLHttpRequest对象提供了在网页加载后与服务器进行通信的方法. 使用XMLHttpRequest对象,能够: 在不重新加载页面的情况下更新网页 在页面已加载后从服务器请求数据,接受数据 在 ...

  6. 第一个Sprint冲刺第四天

    讨论成员:邵家文.李新.朱浩龙.陈俊金 讨论问题:掌握计时技术的知识 讨论地点:qq网络 进展:即将开始对计时技术代码的编写

  7. dedecms内容页调用缩略图 缩略图多种用法(借鉴)

    给大家分享一下文章内容页调用缩略图的方法. 这种问题是:文章有缩略图,但是文章里面没有,想把缩略图添加到文章里面. 1.文章内容页调用缩略图方法如下两种.第一种没有大小设置.原图显示.第二种.可以设大 ...

  8. LK 光流法简介

    前言 若假定一个局部区域的像素运动是一致的,则可以用这个新的约束条件替代前文中提到的全局速度平滑约束条件.这种光流算法就叫做 LK 光流法. LK 光流法的推导 首先,需要推导出光流约束方程. 这一步 ...

  9. codeforce The Art of Dealing with ATM

    题目大意 ATM取款机有n种不同的钱币kind[i],每次取款允许吐出不超过k张钱币,且钱币的种类数不能超过2(一开始没理解2的意思),现在有q次取款,钱数为ques,问ATM能否凑出这样的钱,若能的 ...

  10. (转)Hadoop数据类型

    来源: http://www.cnblogs.com/anny-1980/articles/2608097.html BooleanWritable:标准布尔型数值 ByteWritable:单字节数 ...