我正在创建类似Feed的应用程序(ionic sdk:cordova / angular)。该应用程序从异步API端点加载基于html的消息。如何转换或捕获包含的锚点href,以便我可以将它们转换为" _system"新窗口而不是我在工作的应用程序窗口?
我连接了模型(简化):
<article ng-repeat="post in posts">
<p ng-bind-html="post.html"></p>
</article>
我有异步API逻辑:
$scope.posts = Api.one("channels", channel.id).getList("posts").$object;
......我有我的指示:
app.directive('a', function() {
return {
restrict: 'E',
link: function(scope, elem, attrs) {
console.log("a href identified");
// Do the window.open(attrs.href, '_system'); stuff...
}
};
});
该指令不响应动态加载的html。
答案 0 :(得分:1)
ng-bind-html
不会编译HTML内容 - 它会直接将其添加到文档中。
不使用它,而是创建自己的活页夹:
.directive('myOwnBinder', function($compile, $timeout){
return {
restrict: 'E',
scope: {
source: '='
},
link: function(scope, element, attrs) {
scope.$watch('source', function(newVal, oldVal) {
if (newVal === oldVal) return;
element.html(newVal);
$compile(element.contents())(scope);
});
}
}
})
...并像这样使用它:
<my-own-binder source="link"></my-own-binder>