Angularjs Angular指令,与lisp宏类似,但用于html

Angularjs Angular指令,与lisp宏类似,但用于html,angularjs,Angularjs,我可以在指令中使用与lisp宏相同的东西吗?在指令中,我可以访问元素内部的源html,并基于它的html创建新的html,将其注入DOM中 我可以访问其中的html,并基于该html创建新模板 html->html转换在Angular中是否可行?从我所读到的情况来看不是这样的,但也许有一些高级的框架使用可以实现这一点 例如,我有这样的代码: <directive> <ul> <li>Foo</li> <li>

我可以在指令中使用与lisp宏相同的东西吗?在指令中,我可以访问元素内部的源html,并基于它的html创建新的html,将其注入DOM中

我可以访问其中的html,并基于该html创建新模板

html->html转换在Angular中是否可行?从我所读到的情况来看不是这样的,但也许有一些高级的框架使用可以实现这一点

例如,我有这样的代码:

<directive>
   <ul>
      <li>Foo</li>
      <li>Bar</li>
   </ul>
</directive>
以及什么输出:

<directive>
   <ul>
      <li ng-hide="some-logic">Foo</li>
      <li ng-hide="some-other-logic">Bar</li>
   </ul>
</directive>
所以我需要的是一个模板函数,它将html作为参数,并返回包含角度代码的模板

template: function(source_xml) {
   return source_xml.find('li').each(function() {
     $(this).attr('ng-hide', '<SOME LOGIC>');
   });
}

有一种方法可以在transclude函数中使用$compile,但我不太确定如何使用它,以及它是否能像我所想的那样工作。

我一个字都不懂:你能举个这样的例子吗?输入应该产生输出吗?@ExpertSystem在某种程度上更新了这个问题,指令本身就是你正在寻找的宏。执行示例的更具角度的本机方法是为这些节点创建一个指令,并在该指令中的这些元素上放置任何需要设置ng hide的逻辑。i、 e.不要考虑把整个HTML拼凑起来,然后使用。找出要以各种方式进行转换的部分,考虑对每个需要转换的部分使用单独的指令,在必要的地方嵌套这些指令。@DanielBeck我试图解决的问题是,我需要将transclude注入两个位置,其中一个位置需要ng hide,通常需要在其中包含不同角度的内容。我可以使用hide和jQuery逻辑,但如果存在ng repeat,我可以访问元素。@jcubic我认为您最好发布一个新问题,它更具体地描述您试图实现的结果;没有任何细节,很难给你提出好的建议。但是,一般来说,angular可以为您做更多的工作,如果您愿意的话:考虑单个组件,每个组件都是它们自己的指令,而不是一个自上而下的指令来处理所有事情。通过jQuery或其他方式直接进行DOM操作几乎从来都不是一个好主意;这通常会导致与客户的冲突。