我正在完成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的控制器。
感谢帮助和见解!
答案 0 :(得分:6)
如果要从外部角度上下文更新数据,则可以使用类似
之类的内容获取定义控制器的元素的范围 angular.element(domElement).scope()
然后使用
在推送更新的范围上定义的 $apply
方法
查看更多详情here