再会,
我只是在学习 Angular,所以如果你只是指出在哪里看会很高兴。
我遇到了一个愚蠢的问题。我在 $scope 上有 3 条数据:宽度、高度和一个数组。我在那个范围上有一个 $watch ,当宽度或高度发生变化时,它正在创建宽度 * 高度长度的新(一维)数组。这很好用。
现在我需要更改所有三个参数 - 例如设置宽度和高度,而不是创建空数组来使用填充数据的数组。而我遇到的问题是好像没有引入data数组。
添加以明确表示:我想要的是用数据数组覆盖创建的数组。例如加载一个保存的游戏。
我的理解是,当我设置新宽度时,角度会立即开始更新数据并创建具有新宽度和旧高度的新数组。当设置新高度时,它被标记为脏并等待下一个 didgest 周期。当我设置一个数据数组时,当处理脏高度并创建新的空数组时,它会被覆盖。
问题是:有没有办法确保在插入数据数组之前完成所有准备工作?
PS。这个例子被简化了,我知道我可以通过设置各种更新标记等来处理这种情况。我对“角度方式”感兴趣 - 是否有某种事件通知处理完成或类似于 $ 的功能apply 将保证所有更改都得到处理?
谢谢!
聚苯乙烯。代码示例(简化):
$scope.w = 15;
$scope.h = 15;
$scope.somearray = [];
$scope.$watch('w*h', function() {
$scope.somearray = [];
for (var i=0; i<$scope.w * $scope.h; i++) {
$scope.somearray.push(0);
}
});
$scope.update = function() {
$scope.w = 10; // here the previous watch is fired
$scope.h = 10; // this value marked as dirty
$scope.somearray = [1,1,1,1,1]; // this data array becomes overwritten when $watch is fired because of the dirty $scope.h
}