角度js观看ng-repeat

时间:2015-04-27 12:50:05

标签: angularjs watch

我在$scope.alertFunction视图中使用了一个数组。之后每10秒我更新一次该数组,并在界面中更改我的值。我希望能够在更新一个值时调用函数0

例如,我有一个值为1的字段,当数组更新时,此字段的值为1,而在界面I上将显示0而不是alertFunction {1}},在那一刻我想触发这个函数$c=curl_init('http://www.alef.ir/rssdx.gmyefy,ggeltshmci.62ay2x.y.xml'); curl_setopt( $c, CURLOPT_USERAGENT,'nginx-curl-blahblahblah' ); curl_setopt( $c, CURLOPT_RETURNTRANSFER, true ); $r=curl_exec( $c ); curl_close( $c ); $doc = new DOMDocument(); $doc->loadxml($r); $arrFeeds = array(); foreach ($doc->getElementsByTagName('item') as $node) { $title=$node->getElementsByTagName('title')->item(0)->nodeValue; $title=strip_tags($title); $link=$node->getElementsByTagName('link')->item(0)->nodeValue; } 。任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

在您的控制器中,您可以像这样观看数组:

$scope.$watch('myArray', function(){
    //something happenned
}, true);

答案 1 :(得分:0)

这应该都在你的控制器中完成,所以不要担心ng-repeat。

手表非常有用,但它们也很昂贵,因为只要任何在您的范围内发生变化,每次摘要都会执行它们。

另外,如果你把手表放在整个阵列上,那么它就不会告诉你哪些元素已经改变,只有那些某些东西

在这种情况下,更新阵列的代码是您可以控制的,因此您不需要单独的手表,您应该能够在更新时检查更改。

例如:

function updateItems(newItems) {
    $scope.items.forEach(function(obj, i) {
        Object.keys(obj).forEach(function(f) {
            var oldValue = obj[f];
            var newValue = newItems[i][f];
            if(newValue !== oldValue) {
                $scope.alertFunction({
                    index: i,
                    field: f,
                    oldValue: oldValue,
                    newValue: newValue
                });
            }
        });
    });
    $scope.items = newItems; // assuming you don't mind the array ref changing
}

已编辑以处理您的示例。

答案 2 :(得分:0)

所以我有一个数组

$ scope.items = [{field_first:0,field_sec:1},{field_first:1,field_sec:3},{field_first:0,field_sec:0}]

10秒后我会

$ scope.items = [{field_first:0,field_sec:1},{field_first:1,field_sec:3},{field_first:1,field_sec:0}]

在这种情况下,它已更新$ scope.items [2] [“field_first”]而不是0现在它的值为1。我想触发此字段的事件。