我在$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;
}
。任何人都可以帮助我吗?
答案 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。我想触发此字段的事件。