3

私は Angular チュートリアルに取り組んでおり、多くの読書を行っています。しかし、私はこの質問に対する答えを見つけるのに苦労しています。または、私はそれについて間違って考えているかもしれません。誰かが私を助けてくれることを願っています!

非常に簡単な例:

var phones = [
    {"name": "Nexus S",
     "snippet": "Fast just got faster with Nexus S.",
     "age": 0},
    {"name": "Motorola XOOM™ with Wi-Fi",
     "snippet": "The Next, Next Generation tablet.",
     "age": 1},
    {"name": "MOTOROLA XOOM™",
     "snippet": "The Next, Next Generation tablet.",
     "age": 2}
];

function PhoneListCtrl($scope) {
  $scope.phones = phones;
  $scope.orderProp = 'age';
}

上で示したのは、このコントローラーの外部から来るデータのソースです。新しいデータの必要に応じてサーバーを XHR する既存のキャッシュ機能があります。

次にモデルが変更されたとしましょう。

phones[3] = {"name": "Something new from the server",
         "snippet": "Here is some new incoming data",
         "age": 5};

PhoneListCtrlモデルが更新されたことをAngular コントローラーに伝えるにはどうすればよいですか? これを自分でテストして配列を更新すると、Angular は変更を認識しないため、DOM を更新しません。

私は$httpサービスを認識していますが、現在のアーキテクチャでは、コントローラー内で $http を使用してデータを取得することはできません。コントローラーは、データ用に作成した外部関数を要求する必要があります。その後、データが変更されたときに、Angular のコントローラーに通知する何らかの方法が必要です。

ヘルプと洞察をいただければ幸いです。

4

1 に答える 1

6

角度コンテキスト外からデータを更新している場合、次のようなものを使用して、コントローラーが定義されている要素のスコープを取得できます

angular.element(domElement).scope()

そして使用する

$apply更新をプッシュするスコープで定義されたメソッド

詳細はこちら

于 2013-07-29T06:50:30.133 に答える