以及ajax以及angularjs 动态模板加载并进行渲染

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){
                    alert("app is running")
                    $rootScope.dalongappdemo={
                        dalonginfo:"dalong demo",
                        daongage:33
                    };
                });
        /// 此处暴露共享的方法
                myapp.controller("IMctrl",function($scope,dalongapp,$rootScope,$compile){
                    $scope.username={
                        appurl:"www.baidu.com"
                    };
                    $scope.onclickdemo=function(){

                        console.log(dalongapp);
                        alert($scope.username.appurl+dalongapp.appname+$rootScope.dalongappdemo.daongage);
                    };
                    $rootScope.compileservice=function(ele,scope){
                     return $compile(ele)(scope);
                    }

                    $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)
                    var scope= angular.element(document.getElementById("dalongdemo")).scope();
                    console.info("scope");

                    console.log(scope);

                    /// 动态编译模板并进行数据加载
                    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");
                    console.log(html);
                    content2.append(html);
//                    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 等指令可能会便捷性比较小。

时间: 2024-08-06 08:21:14

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

AutoSharedLibrary -- 基于模板元编程技术的跨平台C++动态链接加载库

基于模板元编程技术的跨平台C++动态链接加载库.通过模板技术,使用者仅需通过简单的宏,即可使编译器在编译期自动生成加载动态链接库导出符号的代码,无任何额外的运行时开销. ASL_LIBRARY_BEGIN(TestLib) ASL_SYMBOL(Proc_test1, test1, false) ASL_SYMBOL(Proc_test2, test2, true) ASL_LIBRARY_END() TestLib theLib; try { theLib.Load("./1.so"

Silverlight项目笔记7:xml/json数据解析、MVVM下实现多级树形结构TreeView、忽视引用类型导致数据绑定错误、通过流或动态空间加载图片、虚拟目录设置、silverlight安全机制引发的问题、WebClient缓存问题

涉及的内容主要有: 1.xml/json数据解析 2.多级树形结构TreeView 3.忽视引用类型导致数据绑定错误 4.通过流或动态空间加载图片 5.虚拟目录设置 6.silverlight安全机制引发的问题 7.webclient缓存问题 1.xml/json数据解析 (1)xml数据解析 使用WebClient获取数据,获取到的数据实例化为一个XDocument,使用XDocument的Descendants(XName)方法获得对应节点的数据集合,再通过Element这个方法对数据集合进

php动态滚动加载实例

内容涉及:php.分页.jquery.div+css 实例下载:http://download.csdn.net/detail/roro5119/7373905 index.php <? //数据库配置文件 include("conn.php"); //默认搜索 $page = $_GET["page"] ? $_GET["page"] : 1; $pagesize = 20; $pageval = ($page-1)*20; $sql=&

JS获取图片的缩略图,并且动态的加载多张图片

找了好多资料也没有找到该死的ie的解决办法,最后放弃了ie <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>js获取缩略图</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <st

nginx php动态编译加载模块.

#Nginx动态编译加载模块步骤 #查看目前Nginx版本及编译模块 #[[email protected] ~]# /opt/app/lnmp/nginx-1.12.0/sbin/nginx -V #nginx version: nginx/1.12.0 #built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) #built with OpenSSL 1.0.2k  26 Jan 2017 #TLS SNI support enabled #c

esri-leaflet入门教程(5)- 动态要素加载

esri-leaflet入门教程(5)- 动态绘制图形 by 李远祥 在上一章节中已经说明了esr-leaflet是如何加载ArcGIS Server提供的各种服务,这些都是服务本身来决定的,API脚本只是非常简单的调用.但如果要做一列的地图交互操作或者动态渲染等,那就必须使用地图区域跳转.查询结果渲染.动态添加图形等多种交互手段.而这些交互手段基本上离不开一些非服务类型的数据加载,我们可以将其成为动态要素.动态要素一般是在页面端进行动态绘制的. 动态要素这一说法并不是ArcGIS 或者leaf

FreeMarer 模板加载,使用FreeMarker加载远程主机上模板文件

FreeMarker加载模板文件的三种方式: 1.从文件目录加载 2.从类路径加载 3.从Servlet上下文加载 其中第二个和第三个常用在Web开发环境中,类路径也会使用在普通的Java Project中, 如果模板文件不是和应用程序放在同一台主机上,那么如何去读取和解析这些模板文件呢?答案是可以解决的,FreeMarker就提供给一种加载模板的方式,查看API就有URLTemplateLoader类,该类为抽象类,从名字就可以看出从给定的URL加载模板文件,这个URL并没有限定来源, 来源可

velocity模板加载

http://hi.baidu.com/ly_dayu/item/828b09c5c3c5e547a8ba9409 velocity使用基本来说比较简单,但在加载模板时老出问题,很多初学者经常会遇到找不到模板这种异常.本文就针对目前常用的三种模板加载方式做以说明.  一.velocity默认的加载方式(文件加载方式) Java代码   package com.velocity.test; import java.io.StringWriter; import java.util.Properti

7、jQuery的Ajax与Java交互带加载图片

1.jQuery的Ajax与Java交互带加载图片 1.1 html代码 <body> <div id="main"> <button id="myBut">Ajax获取数据</button> <div id="container"> <img src="./img/load.jpg" id="myimg"> </div>