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

Update angular model outside of the controller

本文关键字:模型 控制器 外部 更新      更新时间:2023-09-26

我正在学习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的控制器数据随后何时更改。

感谢您的帮助和洞察力!

如果您从外部角度上下文更新数据,您可以使用类似的东西来获得定义控制器的元素的范围

angular.element(domElement).scope()

然后使用

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

点击此处查看更多详细信息