ajax页面加载后重新加载angularjs指令?

时间:2014-10-29 15:06:32

标签: jquery ajax angularjs angularjs-directive

我的基本HTML就像:

<body ng-controller="ContentCtl">
    <section id="page_content">
        ### HOME PAGE ###
    </section>
</body>

在主页上,我点击导航到另一个页面,它只是使用jQuery更改#page_content的内容,简而言之:

gl.prototype.pageNav = function(page) {
    $.ajax({
        url: page,
        success: function (data) {
            $('#page_content').html(data);
        }
    });
}

在一个子页面上,我使用了一个角度指令:

<div id="awesomeSubPage" ng-my-sub-directive></div>

然而,似乎指令在ajax页面导航后没有被调用,如果我直接访问页面,它会被调用,如:site.com/myApp/awesomeSubPage

该指令的代码是:

myApp.controller('ContentCtrl', function($scope) {
    // commented out
}.directive('ngMySubDirective', function() {
    return {
        link: function(scope, elem, attrs) {
            elem.on('load', function () {
                console.log('Run ngMySubDirective postMessage');
            });
        }
    }
});

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您是否有使用jQuery更改内容的特殊原因?如果您正在创建AngularJs应用程序,那么您可以使用Angularjs Routing模块显示不同的视图。

该指令在您的情况下不起作用的原因是,通过使用jQuery,您不在&#34; Angular世界&#34;。所以Angular不知道内容已经改变了。如果确实需要,可以致电$scope.$apply。您也可以使用$.ajax拨打电话,将$http的电话号码替换为{{1}}