如何使用angular模板呈现HTML
这是我的模板
<div class="span12"> <ng:view></ng:view> </div>
这是我的视图模板
<h1>{{ stuff.title}}</h1> {{stuff.content }}
现在我得到的content
为HTML,我想显示在视图中。
但我所得到的是原始的HTML代码。 我怎么可以呈现为实际的HTML
使用-
<span ng-bind-html="myContent"></span>
你需要告诉angular度不能逃脱它。
为此,我使用自定义filter。
在我的应用程序:
myApp.filter('rawHtml', ['$sce', function($sce){ return function(val) { return $sce.trustAsHtml(val); }; }]);
那么,在视图中:
<h1>{{ stuff.title}}</h1> <div ng-bind-html="stuff.content | rawHtml"></div>
您应该遵循Angular文档并使用$ sce – $ sce是一项为AngularJS提供严格上下文转义服务的服务。 这是一个文档: http ://docs-angularjs-org-dev.appspot.com/api/ng.directive: ngBindHtmlUnsafe
以asynchronous加载Eventbriteloginbutton为例
在你的控制器中:
someAppControllers.controller('SomeCtrl', ['$scope', '$sce', 'eventbriteLogin', function($scope, $sce, eventbriteLogin) { eventbriteLogin.fetchButton(function(data){ $scope.buttonLogin = $sce.trustAsHtml(data); }); }]);
在你看来只是添加:
<span ng-bind-html="buttonLogin"></span>
在您的服务中:
someAppServices.factory('eventbriteLogin', function($resource){ return { fetchButton: function(callback){ Eventbrite.prototype.widget.login({'app_key': 'YOUR_API_KEY'}, function(widget_html){ callback(widget_html); }) } } });
所以也许你想在你的index.html中加载库,脚本,并用视图初始化应用程序:
<html> <body ng-app="yourApp"> <div class="span12"> <div ng-view=""></div> </div> <script src="http://code.angularjs.org/1.2.0-rc.2/angular.js"></script> <script src="script.js"></script> </body> </html>
那么yourView.html可能只是:
<div> <h1>{{ stuff.h1 }}</h1> <p>{{ stuff.content }}</p> </div>
scripts.js可以让你的控制器的数据$作用于它。
angular.module('yourApp') .controller('YourCtrl', function ($scope) { $scope.stuff = { 'h1':'Title', 'content':"A paragraph..." }; });
最后,你必须configuration路由并分配控制器来查看它的$ scope(即你的数据对象)
angular.module('yourApp', []) .config(function ($routeProvider) { $routeProvider .when('/', { templateUrl: 'views/yourView.html', controller: 'YourCtrl' }); });
我没有testing过这个,对不起,如果有一个错误,但我认为这是获取数据的Angularish方式