AngularJS - 在指令中加载动态模板HTML

jwe*_*est 7 angularjs

我有一个指令从外部HTML文件加载内容.传递给该指令的是一些范围数据,用于呈现该HTML片段.例如

<div class="{{cls}}" data-obj="{{obj}}" data-id="{{id}}">

<!-- remainder of content here -->

</div>

我想在这个指令中做的是根据传递给指令的原始范围数据在其中加载另一个HTML部分.我似乎无法让这个工作,但它应该是以下几点:

<div class="{{cls}}" data-obj="{{obj}}" data-id="{{id}}">

<!-- remainder of content here -->

<div ng-include="partials/{{obj}}.html></div>

</div>

使用此文件,文件不会包含在内,但我也没有收到任何错误.有人可以帮我吗?

注意:我读过这个,这是一个类似的问题,但没有帮助我.

更新 - 我在Chrome开发工具中注意到URL正在按预期解析,但文件内容未包含在内.我从ng-include加载和编译所请求片段的文档中想到了,所以我期待这个工作.

jwe*_*est 17

最后通过在指令中声明以下内容找到了解决方案:

<div ng-include src="view.getView()"></div>
Run Code Online (Sandbox Code Playgroud)

以及指令控制器中的以下内容:

$scope.view = {
    getView: function() {
        return "partials/" + $scope.obj + ".html";
    }
};
Run Code Online (Sandbox Code Playgroud)

现在完美运作!

  • 你可以稍微简化一下,问题是它需要一个字符串,而不是对象:`<div ng-include src ="'partials /'+ {{obj}} +'.html'"> </ div>` .请注意,我在任何普通文本周围放置单引号,这是您需要强制它从对象文字到字符串. (2认同)