在Angular异步内容中的Cordova window.open“_system”

时间:2014-05-14 16:18:42

标签: angularjs cordova cordova-3 inappbrowser ionic-framework

我正在创建类似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。

1 个答案:

答案 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>

Working Plunker