这是我的傻瓜 - http://plnkr.co/edit/VYH5QbO99ZbMkvc2D4Fe?p=preview
$digest already in progress
(见console.log
) 更新
萤火虫中HTML
的身体看起来像
<body data-ng-controller="SummaryController" class="ng-scope">
<h1>Hello Directive!</h1>
<ng-view></ng-view>
<div summary="loadPie1()">
<div>
<div id="pie1">I am pie 1</div>
<div id="pie2">I am pie 2</div>
</div>
</div>
</body>
请帮忙
答案 0 :(得分:1)
那里不需要scope.$apply
。调用链接函数并使用范围构建模板,因此您尝试对正在构建的模板应用范围更改
http://jimhoskins.com/2012/12/17/angularjs-and-apply.html
解决问题的一种方法是:
app.directive('summary', function(){
return {
restrict: 'A',
scope : {
summary : '='
},
templateUrl: 'summary.html',
link: function(scope, elem, attrs){
console.log('directive: call to load pie1');
scope.summary();
}
}
});
app.controller('SummaryController', function($scope){
console.log('controller glued');
$scope.loadPie1 = function() {
console.log('controller: will load pie1');
};
});
<div summary="loadPie1"></div>
您可以传递实际的函数闭包,而不是字符串