如何在Angular.js中更新模型?

时间:2014-07-13 00:18:06

标签: angularjs

我能找到的所有文档都说明了视图自动更新模型。但是,使用示例控制器:

var phonecatApp = angular.module('phonecatApp', []);

phonecatApp.controller('PhoneListCtrl', function ($scope) {
  $scope.phones = [
    {'name': 'Nexus S',
     'snippet': 'Fast just got faster with Nexus S.',
     'age': 1},
    {'name': 'Motorola XOOM™ with Wi-Fi',
     'snippet': 'The Next, Next Generation tablet.',
     'age': 2},
    {'name': 'MOTOROLA XOOM™',
     'snippet': 'The Next, Next Generation tablet.',
     'age': 3}
  ];

  $scope.orderProp = 'age';
});

在JavaScript中,我如何(例如)将手机更改为空数组?基本上我想做

$scope.phones = [];

(并自动更新视图),但我无法弄清楚如何进入'手机变量

1 个答案:

答案 0 :(得分:2)

如果您只是想清空数组,那么在该控制器内部添加一个清除数组的函数。然后使用指令来调用该函数。例如:

JS:

$scope.clearPhoneData = function() {
    $scope.phones.length = 0;
};

HTML:

<div ng-click="clearPhoneData()">Clear</div>

如果您尝试从此控制器外部访问数据,那么您真正想要设置的是service,它会检索手机数据并将其提供给controllers使用service。然后,您的controller使用service作为dependency并执行以下操作:

$scope.$watch(function() {
    return phoneService.phones;
}, function(newData) {
    $scope.phones = newData;
});

目前还不清楚你想要什么,但我恳请你不要在没必要时使用$scope.$apply()

这是一个应该帮助你的傻瓜:http://plnkr.co/edit/LwvZCz941CX9BGMqRhXe?p=preview

它显示了service的实现以及如何使用它来跨多个控制器访问数据,清除数据等。