对于想了解AngularJS-单击按钮即可从指令加载模板html的读者,本文将是一篇不可错过的文章,我们将详细介绍angularjs点击事件,并且为您提供关于Angular2动态加载模板、angula
对于想了解Angular JS-单击按钮即可从指令加载模板html的读者,本文将是一篇不可错过的文章,我们将详细介绍angularjs点击事件,并且为您提供关于Angular2动态加载模板、angularjs ng-bind-html 指令 对html标签转译、angularjs – Angular Bootstrap后加载模块、angularjs – Angular JS – 将数据从指令发送到父控制器的有价值信息。
本文目录一览:- Angular JS-单击按钮即可从指令加载模板html(angularjs点击事件)
- Angular2动态加载模板
- angularjs ng-bind-html 指令 对html标签转译
- angularjs – Angular Bootstrap后加载模块
- angularjs – Angular JS – 将数据从指令发送到父控制器
Angular JS-单击按钮即可从指令加载模板html(angularjs点击事件)
单击链接时,我试图加载HTML模板。我已经制定了包含templateUrl
加载HTML文件的指令。单击链接时,我将调用带有自定义指令“myCustomer”的div附加到index.html中已存在的div的函数。我到目前为止所做的一切都显示在下面,但这不起作用。
index.html
<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title>Example - example-example12-production</title> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.1/angular.min.js"></script> <script src="script.js"></script></head><body ng-app="docsTemplateUrlDirective"> <div ng-controller="Controller"> <a href="#" ng-click="showdiv()">show</a> <div id="d"></div></div></body></html>
script.js
(function(angular) { ''use strict'';angular.module(''docsTemplateUrlDirective'', []) .controller(''Controller'', [''$scope'', function($scope) { $scope.showdiv = function(){ $("#d").append("<div my-Customer></div>"); }; }]) .directive(''myCustomer'', function() { return { templateUrl: ''my-customer.html'' }; });})(window.angular);
my-customer.html
<p>DIV CONTENT</p>
这是我在这里测试此代码的链接
答案1
小编典典这是因为如果您添加这样的内容,那么angular不会绑定指令,
您需要$compile
维修才能执行此操作,这会将指令与您的$scope
所以控制器喜欢
.controller(''Controller'', [''$scope'', ''$compile'', function($scope, $compile) { $scope.showdiv = function(){ var compiledeHTML = $compile("<div my-Customer></div>")($scope); $("#d").append(compiledeHTML); };}])
这是演示
或者 这样做很好,
用于ng-if
创建或删除html中的元素,
试试这个代码
控制器 ,
....$scope.anableCustomerDirective = false;$scope.showdiv = function(){ $scope.anableCustomerDirective = true;};
HTML
<body ng-app="docsTemplateUrlDirective"> <div ng-controller="Controller"> <a href="#" ng-click="showdiv()">show</a> <div id="d"> <div my-Customer ng-if=''anableCustomerDirective''></div> </div> </div></body>
建议
如果您的主要目的是在单击后放置html内容,则可以ng-include
在此处使用它,它会更清洁,并且不需要其他指令。
<div id="d"> <div ng-include="templateURL"></div> </div> $scope.showdiv = function(){ $scope.templateURL = ''my-customer.html''; };
找到演示
Angular2动态加载模板
谢谢
解决方法
如果模板不是很大,您可以使用* ngIf指令基于某个组件的属性进行有条件渲染.
解决此问题的另一种方法是在组件级别实现路由,然后在使用router.navigate([‘./ MySubcomponent’])收到数据后以编程方式路由到这些路由
angularjs ng-bind-html 指令 对html标签转译
文章参考
http://www.tuicool.com/articles/2eIrIz
http://www.runoob.com/angularjs/ng-ng-bind-html.html
在工作中遇到问题:用户在后台添加一篇新闻,在数据库中存储的是HTML代码,从数据库查询出来之后结果把HTML代码显示出来。
解决办法:使用ng-bind-html 指令,能够对HTML代码的标签转译,在浏览器中显示
ng-bind-html 指令会自动过滤掉标签内的样式?
所谓sce即“Strict Contextual Escaping”的缩写。翻译成中文就是“严格的上下文模式”也可以理解为安全绑定吧。
$sce干的事情来看就是将语境中存在的跨站攻击的风险给干掉.
我们返回的内容中包含一系列的html标记,它可以通过使用$sce.trustAsHtml()。该方法将值转换为特权所接受并能安全地使用“ng-bind-html”。所以,我们必须在我们的控制器中引入$sce服务.
代码如下
【1】angular源码分析:angular中入境检察官$sce
【2】野兽的 Angular 学习 - -sce和sce和sceDelegate
【3】$sce官方手册
angularjs – Angular Bootstrap后加载模块
angular.module('mainApp',[]);
后来我意识到用户需要通过secondaryApp提供的所有路由才能打开它们.所以现在我需要我的模块看起来像这样:
angular.module('mainApp',['secondaryApp']);
我成功地lazyLoading secondaryApp js文件,但我无法将其添加到mainApp.我试过将它添加到requires数组,即
var app = angular.module('mainApp'); app.requires[app.requires.length] = 'secondaryApp';
这会将模块名称添加到requires数组,但mainApp仍然无法访问secondaryApp中提供的路由/状态.
有没有人有什么建议?我已经被困在这一段了一段时间了.
谢谢!
解决方法
每次声明具有依赖关系的模块时,它都会覆盖先前的声明.
angularjs – Angular JS – 将数据从指令发送到父控制器
因此,为了在单个对象中发送它,我首先需要将指令中存储的数据提取到我的主范围,然后将其与我从表单中获取的数据合并.
为此,我需要修改ngCart.js指令.我试图提供服务,正如here所建议的那样,但我无法让它发挥作用.我在指令中添加的代码是这样的
.service('ngCartData',['ngCart',function(ngCart){ return { data:ngCart; }; }])
,但是我收到一个错误,说模块’ngCart’不可用!
我对角度服务和工厂都很陌生,所以我不确切地知道在哪里工作.我用我的代码创建了一个plunkr(我尝试使用上面的代码修改ngCart.js文件,但是plunkr显示了该指令而没有任何修改).我只需要能够在范围ngCart中发送存储在指令中的数据,以便我可以在父控制器中监听它(参见plunkr中的checkout部分).
任何帮助将非常感激.谢谢!
我已按以下方式编辑您的应用程序(在script.js中)
app.controller('myCtrl',function($scope,ngCart,myCart) { $scope.names = [...]; ... console.log(myCart.cart); }) .factory('myCart',function(ngCart){ return { cart: ngCart.$cart }; })
并记录{shipping:30,taxRate:null,tax:null,items:Array [2]},我认为这就是你所需要的(我记录之前添加了2个项目).
请注意,添加服务是多余的;您可以随时随地访问数据.只需将ngCart注入您的控制器/服务/等.并且可以使用更新的数据.
因此,以下代码是等效的:
app.controller('myCtrl',ngCart) { $scope.names = [...]; ... console.log(ngCart.$cart); });
获得错误的一个可能原因可能是,在编辑ngCart模块时,您遇到了某种错误(如拼写错误),导致ngCart对角度不可见.
今天的关于Angular JS-单击按钮即可从指令加载模板html和angularjs点击事件的分享已经结束,谢谢您的关注,如果想了解更多关于Angular2动态加载模板、angularjs ng-bind-html 指令 对html标签转译、angularjs – Angular Bootstrap后加载模块、angularjs – Angular JS – 将数据从指令发送到父控制器的相关知识,请在本站进行查询。
本文标签: