Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular.js加载、处理和显示通过REST$resource获得的动态模板_Javascript_Angularjs_Rest_Templates_Dynamic - Fatal编程技术网

Javascript Angular.js加载、处理和显示通过REST$resource获得的动态模板

Javascript Angular.js加载、处理和显示通过REST$resource获得的动态模板,javascript,angularjs,rest,templates,dynamic,Javascript,Angularjs,Rest,Templates,Dynamic,我有一个Angular应用程序,需要支持可定制的报告。我的意图是允许用户从许多可用的报告中选择一个,并让后端RESTAPI以JSON的形式提供模板和数据(最终用户可以自定义模板) 然后,该应用程序将以某种方式将模板插入“报告”视图页面,然后将数据放入范围,并编译和显示报告/模板 我已经研究过ng include,但是它似乎只支持文档的URL或路径,但是我已经通过REST服务获得了模板文本,并且我不能使用静态URL或文件路径,这需要通过REST api实现,如果ng include直接接受了模板文

我有一个Angular应用程序,需要支持可定制的报告。我的意图是允许用户从许多可用的报告中选择一个,并让后端RESTAPI以JSON的形式提供模板和数据(最终用户可以自定义模板)

然后,该应用程序将以某种方式将模板插入“报告”视图页面,然后将数据放入范围,并编译和显示报告/模板

我已经研究过ng include,但是它似乎只支持文档的URL或路径,但是我已经通过REST服务获得了模板文本,并且我不能使用静态URL或文件路径,这需要通过REST api实现,如果ng include直接接受了模板文本,这可能会起作用,但不会起作用

我尝试编写一个指令,尝试在页面上调用一个方法(getTemplate()),该方法将加载已经从作用域中获取的模板,但是我的指令显然没有访问该作用域的权限

我应该用什么策略来实现这一点?一个指令似乎是最好的,但我显然是做错了,完全迷失在文档和我的多次尝试中

我试着写一个指令,试着在页面上调用一个方法 (getTemplate()),将加载已从 但是,我的指令无权访问范围 显然

是的,您是对的,但是有一种方法可以将数据从范围传递到指令。假设您希望将变量“x”从作用域传递到指令 用这个

此变量仅在控制器和postlink函数中可用,因此您的指令模板需要如下所示

<ng-bind-html="directiveVar"/>
参考资料

  • .$compile

  • 您可以将动态模板编译为控制器中DOM上的一个元素,然后在控制器中执行如下操作:

    var el = angular.element('#myselector');   
    el.html(mydynamichtmlfromresource);
    
    $compile(el.contents())($scope);
    
    我将使用带有单个DIV容器的模板设置路由(您可以使用HTMLToJS在线工具或grunt任务在单个JavaScript文件中提取所有静态容器模板):


    我会试试这个,谢谢,以前错过了ngBindHtml。
    <ng-bind-html="directiveVar"/>
    
    $scope.directiveVar =$sce.trustAsHtml($scope.directiveVar)
    
    var el = angular.element('#myselector');   
    el.html(mydynamichtmlfromresource);
    
    $compile(el.contents())($scope);
    
    <section class="view">
      <div id="myselector"></div>
    </section>