当前位置: 首页 > 面试题库 >

您可以即时更改templateUrl吗?

扶开诚
2023-03-14
问题内容

是否可以通过在指令范围内传递值来即时更改templateUrl?我想将数据传递到控制器,该控制器将根据从指令传递的数据来呈现页面

可能看起来像这样:

<div> 
   <boom data="{{myData}}" />
</div>

.directive('boom', function {
        return {
            restrict: 'E',
            transclude: true,
            scope: 'isolate',
            locals: { data: 'bind' },
            templateUrl: "myTemplate({{boom}}})" // <- that of course won't work.
        }
    });

问题答案:

有可能,但是当要加载的模板取决于某些范围数据时,您将无法再使用指令的templateUrl属性,并且您将不得不使用较低级别的API,即$http$compile

大约需要做的事情(仅在链接功能中是可能的)是使用$http(不要忘了参与$templateCache!)检索模板的内容,然后“手动”编译模板的内容。

听起来可能很多工作,但实际上却很简单。我建议看看使用此模式的ngInclude指令源。

这是该指令的框架:

app.directive('boom', function($http, $templateCache, $compile, $parse) {
        return {
            restrict: 'E',
            link: function(scope , iElement, iAttrs) {                            
              var boom = $parse(iAttrs.data)(scope);
              $http.get('myTemplate'+boom, {cache: $templateCache}).success(function(tplContent){
                iElement.replaceWith($compile(tplContent)(scope));                
              });              
            } 
        }
    });

假设它将用作<boom data='name'></boom>。在这里工作的小伙伴:http
://plnkr.co/edit/TunwvhPPS6MdiJxpNBg8?
p=
preview


请注意,我已将属性评估从更改{{name}}为属性解析,因为一开始模板可能只应确定一次。



 类似资料:
  • 问题内容: 我试图在注释中包含一条动态消息,该消息根据传递给它的其他变量中的值来更改文本的主体。我设置了默认消息,但是当设置了某个指示器时,我想显示其他消息。这可能吗? 这是我的注释- 这是注释使用的验证器类- 我最感兴趣的部分是读取的代码- 问题答案: 这是我能够执行此操作的方式-

  • 问题内容: 我有一个为移动Safari浏览器构建的AJAX应用,该应用需要显示不同类型的内容。 对于某些内容,我需要,对于其他内容,我需要。 有没有一种方法可以在不刷新页面的情况下修改content属性的值? 问题答案: 我意识到这有点老了,但是可以。一些JavaScript可以帮助您入门: 只需更改所需的部件,Mobile Safari就会尊重新设置。 更新: 如果您的源代码中还没有meta视口

  • 问题内容: 我了解在Java中,不应在遍历Java时对其进行修改,例如删除或添加元素。但是,如何更改列表中的元素呢?例如,如果我们有 因此,我不是在谈论修改存储在某个元素上的对象;我说的是改变对象是 什么 。List的大小未更改,但是索引处的对象正在更改,因此从技术上讲,List也在被修改。我的老板声称此代码很好(并且确实可以正常工作),但我仍然认为它是不正确的。是否可以使用ListIterato

  • 问题内容: Angular文档说:- DOM的编译是通过调用$ compile()方法执行的。该方法遍历DOM并匹配指令。如果找到匹配项,则将其添加到与给定DOM元素关联的指令列表中。一旦标识了给定DOM元素的所有指令,便 按优先级 对它们进行 排序 并执行其compile()函数。 我相信ng-repeat指令的优先级比自定义指令低,在某些情况下,例如dynamicid和custom指令。角度是

  • 我有改变背景的事件,但不知道字体/字体颜色?

  • 问题内容: 我试图使用ap:ajax标记,然后在该侦听器中设置一个名为“ periodRendered”的值。然后我试图通过p:ajax标签的更新来更新h:outputLabel标签。它不是ajaxily更新,我在想这是因为primefaces ajax标签无法更新标准jsf outputLabel标签。 我的假设正确吗?是否应该使用更合适的标签代替h:outputLabel? 问题答案: 您无法