がを処理するためには、(ディレクティブとコントローラ[最初のディレクティブとコントローラ]の間、あなたのケースで)順番に 2以上の機能を要求し、あなたはそれらの間のモデルを渡すことができます。
より、について説明アプリケーション内のモデルアプリを柔軟にするための強力戦略の一つである
。
例えば
$scope.model = { anything: false }
私たちは私たちのディレクティブでこの$scope
に合格しようとした場合、その後、私たちは、コントローラと私たちのディレクティブ間の結合2つの方法を持って、私はそれはあなたのサンプルでどのように機能するかを示しています。
app.js
var app = angular.module('app', []);
app.directive('cDir', function($timeout){
return {
restrinct: 'E',
controller: 'appCtrl',
template: 'cdir template',
scope: {
ready: '='
},
link: function(scope){
console.log('t1');
scope.ready = true;
}
}})
app.controller('appCtrl', ['$scope', function($scope) {
$scope.ready = false;
$scope.$watch('ready', function(isReady){
if(isReady){
console.log('t2');
}
})
}]);
ビューがあり
<div ng-app="app">
<c-dir ready="ready"></c-dir>
</div>
我々はready
ディレクティブからtrue
ときconsole.log('t2')
が現れ、ディレクティブのモデルとして$scope.ready
を定義します。私たちは$scope
のリスナーとして$watch
をリスナーとして使用しています。
「正しい」 –
を定義しますが、それはなぜですか?構文はうまくいくようですが、通常は合計時間を追加して1つの '$ timeout'しか使用しません。 –
@AlonEitan私は、それがまだ目に見えないいくつかのケースでいくつかの悪い副作用を持つことができないことを確実にすることを意味します。 – neptune