Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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 AngularJS-显式运行指令_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS-显式运行指令

Javascript AngularJS-显式运行指令,javascript,angularjs,Javascript,Angularjs,我是AngularJS的新手,我正在努力解决以下问题 我需要执行以下三步工作流程: 调用返回字符串列表的web服务。例如,[“apple”、“banana”、“orange”]等。在将响应发送到视图之前,我截取响应并在每个字符串周围添加尖括号 对于服务返回的每个字符串,我必须呈现 <apple /> <banana /> <orange /> 最后,获取与要“执行”的每个字符串对应的实际AngularJS指令(不确定正确的单词是什么),并用templateU

我是AngularJS的新手,我正在努力解决以下问题

我需要执行以下三步工作流程:

  • 调用返回字符串列表的web服务。例如,[“apple”、“banana”、“orange”]等。在将响应发送到视图之前,我截取响应并在每个字符串周围添加尖括号

  • 对于服务返回的每个字符串,我必须呈现

    <apple /> <banana /> <orange />
  • 最后,获取与要“执行”的每个字符串对应的实际AngularJS指令(不确定正确的单词是什么),并用templateUrl属性中的内容替换上面的元素,如它们各自的指令中所述

  • 现在,我正在使用AngularJS执行上面的步骤1和步骤2。但我知道,它们可以通过使用AJAX调用使用普通JavaScript来完成

    我的问题是指令没有得到“运行”或“执行”,我在页面上以纯文本的形式显示这些标记- <apple /> <banana /> <orange /> 等等

    我如何告诉Angular用模板中的实际内容替换自定义标记

    谢谢你的帮助

    更新:代码如下所示:

    <div class="content" ng-controller="mainController"> <ul class="feeds"> <li ng-repeat="fruit in fruits"> <div ng-controller="fruitSpecificController"> {{fruit}} </div> <!-- This renders <apple />, <banana />, etc. --> </li> </ul> </div>
    • {{水果}

    还要注意,每个水果都可以有自己的控制器。在上面的代码中,我说的是“fruitSpecificController”,但理想情况下,它也会在运行时生成。例如,“appleController”、“orangeController”等。是的,它们将是父“mainController”的子控制器。

    您可能只需要使用。这些文档不是非常有用,但要点是调用$compile,传入DOM元素(在您的例子中是指令的父元素)。它返回一个函数,然后执行该函数,并传入要使用的范围($rootscope可能是安全的)


    您可能只需要使用。这些文档不是非常有用,但要点是调用$compile,传入DOM元素(在您的例子中是指令的父元素)。它返回一个函数,然后执行该函数,并传入要使用的范围($rootscope可能是安全的)


    您可以使用compile方法,但如果您愿意通过URL加载,则有一个内置指令可以为您执行此操作

    ng包括 使用
    ng include=“”/path/to/template.html“
    -将请求经过计算的表达式URL,并将其作为子级(为您编译)添加到DOM中

    还可以使用缓存模板(如果要同时请求多个模板或缓存多个包含)

    看起来是这样的:
    $templateCache.put(/path/to/template.html,'apple html string')

    自定义指令(带$compile) 否则,如果要加载并编译字符串,请在
    ng repeat
    中使用指令

    .directive('unsafeHtmlCompile', function($compile){
      return {
        link: function(scope, element, attrs){
          scope.$watch(attrs.unsafeHtmlCompile, function(val){
            if(val !== undefined){
              element.html('');
              var el = angular.element(val);
              element.append(html);
              $compile(el)(scope);
            }
          });
        }
      } 
    }
    

    如果您的数据不会更改,请记住删除监视程序:-)

    您可以使用compile方法,但如果您愿意通过URL加载,则有一个内置指令可以为您执行此操作

    ng包括 使用
    ng include=“”/path/to/template.html“
    -将请求经过计算的表达式URL,并将其作为子级(为您编译)添加到DOM中

    还可以使用缓存模板(如果要同时请求多个模板或缓存多个包含)

    看起来是这样的:
    $templateCache.put(/path/to/template.html,'apple html string')

    自定义指令(带$compile) 否则,如果要加载并编译字符串,请在
    ng repeat
    中使用指令

    .directive('unsafeHtmlCompile', function($compile){
      return {
        link: function(scope, element, attrs){
          scope.$watch(attrs.unsafeHtmlCompile, function(val){
            if(val !== undefined){
              element.html('');
              var el = angular.element(val);
              element.append(html);
              $compile(el)(scope);
            }
          });
        }
      } 
    }
    

    如果您的数据不变,请记住删除观察者:-)

    当您说“苹果”、“香蕉”和“橙色”时,这些只是您想要解析为HTML DOM的HTML字符串吗?这就是想法,是的。当您说“苹果”、“香蕉”和“橙色”时,这些只是您想要解析为HTML DOM的HTML字符串吗?这就是想法,是的。我想我明白了这个想法,我用$compile实现了它。嗯……有点。这些FROUT指令自己从web服务获取填充的数据。现在,数据来自在控制器中调用的函数。在$compile之后如何调用该函数?我想我明白了这个想法,并且使用$compile实现了它。嗯……有点。这些FROUT指令自己从web服务获取填充的数据。现在,数据来自在控制器中调用的函数。在$compile之后如何调用该函数?我想我明白了这个想法,并且使用$compile实现了它。嗯……有点。这些FROUT指令自己从web服务获取填充的数据。现在,数据来自在控制器中调用的函数。在$compile之后如何调用该函数?我想我明白了这个想法,并且使用$compile实现了它。嗯……有点。这些FROUT指令自己从web服务获取填充的数据。现在,数据来自在控制器中调用的函数。在$compile之后如何调用该函数?