更新控制器外部的角度模型

时间:2013-07-29 04:17:24

标签: javascript angularjs xmlhttprequest

我正在完成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};

如何告知Angular PhoneListCtrl控制器模型已更新?如果您自己测试并更新数组,Angular不会知道更改,因此不会更新DOM。

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

感谢帮助和见解!

1 个答案:

答案 0 :(得分:6)

如果要从外部角度上下文更新数据,则可以使用类似

之类的内容获取定义控制器的元素的范围

angular.element(domElement).scope()

然后使用

在推送更新的范围上定义的

$apply方法

查看更多详情here