我的基本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');
});
}
}
});
有什么想法吗?
答案 0 :(得分:1)
您是否有使用jQuery更改内容的特殊原因?如果您正在创建AngularJs应用程序,那么您可以使用Angularjs Routing模块显示不同的视图。
该指令在您的情况下不起作用的原因是,通过使用jQuery,您不在&#34; Angular世界&#34;。所以Angular不知道内容已经改变了。如果确实需要,可以致电$scope.$apply
。您也可以使用$.ajax
拨打电话,将$http
的电话号码替换为{{1}}