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

vca*_*llo 3 javascript xmlhttprequest angularjs

我正在完成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';
}
Run Code Online (Sandbox Code Playgroud)

我上面所代表的是一个来自该控制器外部的数据源.我有一个现有的缓存功能,可以根据新数据的需要对服务器进行XHR.

让我们说模型然后改变:

phones[3] = {"name": "Something new from the server",
         "snippet": "Here is some new incoming data",
         "age": 5};
Run Code Online (Sandbox Code Playgroud)

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

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

感谢帮助和见解!

Cha*_*ani 6

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

angular.element(domElement).scope()

然后使用

$apply 在推送更新的范围上定义的方法

在这里查看更多细节