1

別のコントローラー内にコントローラーがあります。

<div ng-controller="post">
  <div ui-if="isAllowed">
    <footer ng-controller="footer"></footer>
  </div>
</div>

私は ui-if が新しいスコープを作成すると信じているので、ここには 3 つのスコープがあります。

フッター コントローラーが post のスコープにアクセスできるようにしたい。

.controller('post', function($scope) {
  $scope.foo = "bar"
})

簡単にできます$scope.$parent.$parent.fooが、スコープは親から自動的に継承されるはずであり、親のものは非常に扱いにくいと読みました。

Angularjs wiki からの引用:

(コントローラーのスコープ継承を介してデータを共有したい場合は、何もする必要はありません。子スコープは、親スコープのすべてのプロパティにアクセスできます。ロードまたはナビゲート時にコントローラーのロード順序が異なるも参照してください)

フッター スコープから foo にアクセスするにはどうすればよいですか?

4

1 に答える 1

3

ウィキが言ったように、何もする必要はありません。その名前でアクセスするだけです。

<div ng-controller="post">
  <div ui-if="isAllowed">
    <footer ng-controller="footer">
        {{ fooB }} 
    </footer>
  </div>
</div>

function post($scope) {
    $scope.fooA = 'Foo A';
}

function footer($scope) {
    $scope.fooB = $scope.fooA + " and Foo B";
}

たとえば、上記はレンダリングされますFoo A and Foo B

ここでフィドル。

于 2013-05-27T22:41:42.720 に答える