Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS:$watchCollection不工作;抛出错误_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS:$watchCollection不工作;抛出错误

Javascript AngularJS:$watchCollection不工作;抛出错误,javascript,angularjs,Javascript,Angularjs,AngularJS中有一个问题,$scope.$watchCollection()抛出一个错误。我已将代码缩减到与文档中的示例代码完全相同的程度(.$rootScope.Scope#$watchCollection),但仍会抛出错误: function OverviewCtrl($scope) { $scope.names = ['igor', 'matias', 'misko', 'james']; $scope.dataCount = 4; $scope.$watchColle

AngularJS中有一个问题,
$scope.$watchCollection()
抛出一个错误。我已将代码缩减到与文档中的示例代码完全相同的程度(.$rootScope.Scope#$watchCollection),但仍会抛出错误:

function OverviewCtrl($scope) {
  $scope.names = ['igor', 'matias', 'misko', 'james'];
  $scope.dataCount = 4;

  $scope.$watchCollection('names', function(newNames, oldNames) {
    $scope.dataCount = newNames.length;
  });
}
我得到了错误

'undefined' is not a function (evaluating '$scope.$watchCollection('names', function(newNames, oldNames) {
  $scope.dataCount = newNames.length;
})')

我不知道可能是什么问题。我完全按照文档所说的去做,除了我把它放在一个控制器中,但是看起来这段代码是为控制器设计的。那么这里有什么问题呢?

您也可以使用以下语法:

$scope.$watch('myCollection', function(value, oldValue) {
    // insert awesome code here
}, true);

true
参数告诉AngularJS“深度监视”该值

您还可以使用以下语法:

$scope.$watch('myCollection', function(value, oldValue) {
    // insert awesome code here
}, true);


true
参数告诉AngularJS“深度监视”该值

您使用的是什么版本的angular<代码>$watchCollection是一个全新的功能。1.0.6。最新的稳定版本似乎是1.0.8。升级到1.2.0-rc2似乎可以做到这一点。还必须明确包括routeProvider才能让应用程序正常工作。(我想知道这是否意味着我可以完全删除routeProvider;我真的不希望我的视图直接绑定到URL。)是的
$watchCollection
不在稳定版本中(您可以在左上角的API文档中指定您的版本,以查看您可以使用什么)。不过,我不确定你的
routeProvider有什么问题。这不是最好的地方,只是一个关于路线的说明。您只能有一个
ng视图
,这就是为什么我跳过了
routeProvider
,只使用
ng include
s。您使用的是什么版本的angular<代码>$watchCollection
是一个全新的功能。1.0.6。最新的稳定版本似乎是1.0.8。升级到1.2.0-rc2似乎可以做到这一点。还必须明确包括routeProvider才能让应用程序正常工作。(我想知道这是否意味着我可以完全删除routeProvider;我真的不希望我的视图直接绑定到URL。)是的
$watchCollection
不在稳定版本中(您可以在左上角的API文档中指定您的版本,以查看您可以使用什么)。不过,我不确定你的
routeProvider有什么问题。这不是最好的地方,只是一个关于路线的说明。您只能有一个
ng视图
,这就是为什么我跳过了
routeProvider
,而只使用
ng include
s。它将监视多深?基本上有两件事我感兴趣:是否有任何元素添加到列表中,对于列表中的每个元素,有一些属性我感兴趣,但不是全部。所以我计划了一个浅层的
$watchCollection
,然后为每个元素准备一些特定的
$watch('item.name')
,以及一个深层的
$watch('item.sublist',function,true)
。或者一个单独的deepwatch性能会更好吗?问题是:你为什么不使用deepwatch呢?它可以满足您的需要(同时观察数组长度和数组内部项的内容),但可能会导致一些陷阱。deep watch的主要不便之处在于它在大型对象或阵列上的性能不佳,而且它可能导致冗余的$digest周期,并使你的应用程序崩溃。我的模型最终可能相当大。并不是所有的东西都需要经常检查。但更重要的是,如果我深入观察每一件事,并且有些事情发生了变化,我仍然不知道到底发生了什么变化,是吗?所以我需要用手再次检查所有东西。我认为,这将使深度监视对我来说毫无用处。除item.sublist外;如果那里有什么变化,我会重新绘制整个画面。很抱歉问这个问题,但你为什么要看这些东西呢?我的意思是,每次更换型号时,你会怎么做?也许有更好的方法可以做到这一点?我需要重新绘制模型的部分矢量图形表示。该模型包含大量信息,但只有子列表和名称可能会显示在矢量图形表示中。它会显示多深?基本上有两件事我感兴趣:是否有任何元素添加到列表中,对于列表中的每个元素,有一些属性我感兴趣,但不是全部。所以我计划了一个浅层的
$watchCollection
,然后为每个元素准备一些特定的
$watch('item.name')
,以及一个深层的
$watch('item.sublist',function,true)
。或者一个单独的deepwatch性能会更好吗?问题是:你为什么不使用deepwatch呢?它可以满足您的需要(同时观察数组长度和数组内部项的内容),但可能会导致一些陷阱。deep watch的主要不便之处在于它在大型对象或阵列上的性能不佳,而且它可能导致冗余的$digest周期,并使你的应用程序崩溃。我的模型最终可能相当大。并不是所有的东西都需要经常检查。但更重要的是,如果我深入观察每一件事,并且有些事情发生了变化,我仍然不知道到底发生了什么变化,是吗?所以我需要用手再次检查所有东西。我认为,这将使深度监视对我来说毫无用处。除item.sublist外;如果那里有什么变化,我会重新绘制整个画面。很抱歉问这个问题,但你为什么要看这些东西呢?我的意思是,每次更换型号时,你会怎么做?也许有更好的方法可以做到这一点?我需要重新绘制模型的部分矢量图形表示。该模型包含大量信息,但只有子列表和名称可能会显示在矢量图形表示中。