2014-11-08 58 views
0

下面你好朋友是我的數組。

data.php文件

$array = array(
    '0' => array(
      'id' = 1, 
      'name' = 'test', 
      'key' = array(
         '0' = 'key1', 
         '1' = 'key2', 
         '2' = 'key3' 
        ) 
     ), 
    '1' => array(
      'id' = 3, 
      'name' = 'test3', 
      'key' = array(
         '0' = 'key7', 
         '1' = 'key8', 
         '2' = 'key9' 
        ) 
     ), 
    '2' => array(
      'id' = 15, 
      'name' = 'test30', 
      'key' = array(
         '0' = 'key4', 
         '1' = 'key5', 
         '2' = 'key6' 
        ) 
     ) 
); 
echo json_encode($array); 
下面

是我的js代碼。

$http({method: 'GET', url: $rootScope.serverURL+'data.php'}). 
    success(function (data, status, headers, config) { 
     $rootScope.simpleData = data; 
    }). 
    error(function (data, status, headers, config) { 

    }); 

$scope.$watch('page + numPage + simpleData', function() { 
    console.log('working');  
},true); 

這工作正常,現在我想設置「關鍵」想要。

$scope.$watch('page + numPage + simpleData.key', function() { 
    console.log('not working');  
},true); 

此代碼不工作,當我寫這樣的代碼,這是工作正常。

$scope.$watch('page + numPage + simpleData[0].key', function() { 
    console.log('working');  
},true); 

當我寫js喜歡它工作正常。角度js在鍵上觀看,但僅限於「0」元素。 在數組中我有很多的元素,我怎麼能看到所有元素「關鍵」。

請幫助

謝謝

+0

顯然,它不會與'simpleData.key'一起工作 - 沒有這樣的事情。 – 2014-11-08 19:15:30

+0

@NewDev我現在編輯我的問題檢查。 – 2014-11-08 19:19:13

+0

你的例子中'simpleData'究竟是什麼? – 2014-11-08 19:22:12

回答

2

$watch荷蘭國際集團​​沒有因爲$scope.simpleData.key === undefined工作。

如果您想深入觀察陣列,可以將true作爲第三個參數添加到$watch,該功能可以深入觀察,但這對性能造成很大影響。每個消化週期都需要深入比較你的數組。

$watch("simpleData", function(){...}, true); 
+0

嘿親愛的謝謝你的回答,這是工作,但不是與多個關鍵字一樣工作。 $ watch(「page + numPage + simpleData」,function(){...},true);當我寫這不工作,請幫助。非常感謝你 – 2014-11-08 19:33:56

+0

你的回答是正確的,但$ watch(「page + numPage + simpleData」,function(){...},true);這是行不通的。我傳遞第三個參數爲true,但不工作。 – 2014-11-08 19:36:38

+0

你爲什麼認爲這會起作用?要觀看多個表達式,使用'$ watchGroup([「page」,「numPage」],function(){...})',但保留'simpleData',因爲'$ watchGroup'沒有做深-看。 – 2014-11-08 19:38:38