に渡される式はonload
、新しいパーシャルが読み込まれるたびに評価されます。この場合、値をvar
2 回変更しているため、両方のパーシャルがロードされるまでに現在の値はB
各パーシャル/テンプレートに異なるデータを渡したい (基になる html ファイルは同じ)。これを実現するには、Tiago が言及しているように、さまざまなコントローラーを使用できます。たとえば、次のことを考慮してください。
<body ng-controller='MainCtrl'>
<div ng-include src='"toBeIncluded.html"' ng-controller='ctrlA' onload="hi()"></div>
<div ng-include src='"toBeIncluded.html"' ng-controller='ctrlB' onload="hi()"></div>
</body>
ここでは、2 つのパーシャルがあり、それぞれが独自のコントローラー (ctrlA
およびctrlB
) から管理される独自のスコープを持ち、両方の子スコープがMainCtrl
です。関数hi()
は のスコープに属し、2 回MainCtrl
実行されます。
次のコントローラーがある場合
app.controller('MainCtrl', function($scope) {
$scope.msg = "Hello from main controller";
$scope.hi= function(){console.log('hi');};
});
app.controller('ctrlA', function($scope) {
$scope.v = "Hello from controller A";
});
app.controller('ctrlB', function($scope) {
$scope.v = "Hello from controller B";
});
そして内容はtoBeIncluded.html
、
<p>value of msg = {{msg}}</p>
<p>value of v = {{v}} </p>
結果のhtmlは、次の行に沿ったものになります
<p>value of msg = Hello from main controller</p>
<p>value of v = Hello from main controller A </p>
と
<p>value of msg = Hello from main controller</p>
<p>value of v = Hello from controller B </p>
例: http://plnkr.co/edit/xeloFM?p=preview