angularjs - 在ng-if中调用Javascript

标签 angularjs angularjs-scope

我有一些旧版jQuery代码。这是一大段代码,因此我希望稍后再移植。要使用它,我叫$('#legacyId').legacyFunction()

不过,这是交易。

我有一个ng-if。在该ng-if中,我有一个JavaScript,我可以在其中调用我的旧函数。

<div ng-if="status=='yes'">
    <div id="legacyId">
        I am a legacy div!
    </div>
    <script type="text/javascript">
        $('#legacyId').legacyFunction()
    </script>
</div>

页面加载时似乎正在调用此JavaScript。虽然我在jQuery之后加载了angular,但似乎angular在ng-if的控制下删除了该部分,因此#legacyId上的jQuery函数失败。

有任何想法吗?谢谢!

编辑注释:我将jQuery和用于扩展jQuery的旧代码导入HTML文档的顶部。 Angular加载在文档的底部。

编辑注释2 :我也尝试过<div ng-init="$('#legacyId').legacyFunction()"></div>,但出现错误,Error: [$rootScope:inprog] $apply already in progress.

最佳答案

好的,设法解决了。

在HTML中:

<div ng-if="status=='yes'">
    <div legacy-directive>
        I am a legacy div!
    </div>
</div>

在我的应用代码中:
app.directive('legacyDirective' , function() {
   return {
        link: function(scope, element, attrs) {
            $(element).legacyFunction(scope.$eval(attrs.legacyDirective));
        }
   }
});

由于$(element).legacyFunction(scope.$eval(attrs.legacyDirective));,看来我也可以将参数传递给legacyFunction;例如<div legacy-directive='{myParameter: true}>
谢谢所有回答!你让我走上了正确的轨道。

关于angularjs - 在ng-if中调用Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19824121/

相关文章:

angularjs - 如何使用 angular-material 1.0.1 在 $mdToast.show 函数中将参数传递给 Controller

javascript - 如果从javascript中删除元素,如何在angularjs中手动销毁范围?

javascript - Angular 翻译在 2 个 Controller 之间不起作用

javascript - Angular 固定表头故障

javascript - 访问已编译指令的隔离范围

angularjs - 将作用域变量名解析为作用域函数?

javascript - 如何在 Protractor 中使用 browser.actions().sendKeys 和 "?"符号?

javascript - Angular.js 点击进入项目详细信息页面

angularjs - 在 ng-repeat 动画之前将 Angular ng-class 设置为 $apply

AngularJS : Directive not able to access isolate scope objects