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};

如何告诉 AngularPhoneListCtrl控制器模型已更新?如果您自己对此进行测试并更新数组,Angular 不会意识到更改,因此不会更新 DOM。

我知道该$http服务,但在我当前的架构中,我不能在控制器中使用 $http 来获取数据——控制器需要询问我为数据编写的外部函数,当数据随后发生变化时,我需要某种方式告诉 Angular 的控制器。

感谢您的帮助和洞察力!

4

1 回答 1

6

如果您要从外部角度上下文更新数据,则可以使用类似的方法获取定义控制器的元素的范围

angular.element(domElement).scope()

然后使用

$apply在作用域上定义的方法来推送更新

在此处查看更多详细信息

于 2013-07-29T06:50:30.133 回答