繁体   English   中英

在视图加载AngularJS后运行脚本

[英]Run script after view is loaded AngularJS

我是AngularJS的新人,我有这个问题;

我用我的控制器中的变量用html填充我的部分视图:

<div ng-bind-html="deliberatelyTrustDangerousSnippet()"></div>

一切顺利,直到我决定运行脚本。 显示该脚本,但它不会运行。 我认为问题是视图在加载页面后填充了我的变量控制器,因此脚本不会运行。 我在我的控制器中使用变量来存储脚本的原因是因为我必须从其他地方获取脚本,并且它经常被更改。

这是运行我的脚本的可行方法吗?

这是我的代码示例:

视图:

    <div ng-bind-html="deliberatelyTrustDangerousSnippet()"></div>

控制器:

    .controller('browseCtrl', function($scope,$sce) {

      $scope.video = '<div id="idxx1" style="width: 460px; height: 290px;" itemprop="video" itemscope itemtype="http://schema.org/VideoObject"></div><script>addeere3ejs("idxx1",  "172653", "24431581", "1_fq2w6oc2");</script>';

      $scope.deliberatelyTrustDangerousSnippet = function() {
      return $sce.trustAsHtml($scope.video);
    };
})

如果我的问题不清楚,我会尝试更好地解释它。

您可以在控制器中使用viewContentLoaded事件。

$scope.$on('$viewContentLoaded', function(){
 // Run after view loaded.
});

不确定ng-bind-html是否允许脚本像这样运行。 您可能需要将其包装在角形支架中以在装载时自动运行。

 <div ng-bind-html="{{deliberatelyTrustDangerousSnippet()}}"></div>

我的工作是使用一个已知的变量来运行这样的$ scope函数:

{{postBind(results)}}

然后在控制器中有一个方法来执行此操作

$scope.postBind = function (obj) {
        running_my_extenal_methods();
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM