栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

动态将Angularjs绑定到新创建的html元素

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

动态将Angularjs绑定到新创建的html元素

一种解决方案是将ngInclude与$
templateCache一起使用,如本Plunker所示。

有几件事要注意。

第一个是,你可以使用服务获取您的模板,并将其添加到$templateCache,(例如复制):

myApp.service('myTemplateService', ['$http', '$templateCache', function ($http, $templateCache) {  $http().then(function (result) {    $templateCache.put('my-dynamic-template', result);  });}]);

然后可以将其包含在模板中,如下所示:

<div ng-include="'my-dynamic-template'"></div>

ngInclude将允许对html字符串进行数据绑定,因此您不需要ngBindHtml。

第二个原因是,当ngInclude创建新作用域时,

html
除非您通过父作用域上的对象(例如
ng-model="data.html"
而不是)访问新创建作用域之外的属性,否则将无法正常访问该属性(
ng-model="html"
请注意,
$scope.data={}
父作用域中的是是什么使得html在ngInclude范围之外可以访问。


编辑

正如您所指出的那样,使用服务返回HTML时,ngInclude选项的用处不大。

这是经过编辑的plunker,具有使用$
compile的基于指令的解决方案,如上述David的评论所示。

相关补充:

app.directive('customHtml', function($compile, $http){  return {    link: function(scope, element, attrs) {      $http.get('template.html').then(function (result) {        element.replaceWith($compile(result.data)(scope));      });    }  }})


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/368179.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号