2015-02-09 74 views
1

我一直在努力解決這個問題幾天。Angular指令中的數據混亂

問題是我的角度指令正在搞亂我的數據模型。

爲了簡單起見,我創建了它的一個簡單的例子,在這裏:http://jsfiddle.net/hanspc/xxy4vh3v/

angular.module('vt.directives', []) 
    .directive('personType', [function() { 
    return { 
     restrict: 'A', 
     replace: true, 
     scope: { 
      personType: '@' 
     }, 
     template: '<div class="{{pClass}}" style="height: 80px; width: 200px">Class: {{pClass}}<br>Type: {{personType}}</div>', 
     link: function (scope, elm, attrs) { 
      console.log(scope.personType); 
      scope.pClass = scope.personType == 'male' ? 'male-class' : 'female-class'; 
     } 
    }; 
}]); 

當我點擊Add按鈕中的一個,它增加了多一個人的數據模型。問題是該指令沒有使用正確的數據值。如果點擊「添加安妮」,數據看起來就在指令的「外部」,而不是「內部」。它應該根據數據返回正確的類名(和顏色),但添加的女性顯示爲藍色(男性)。

而且無論您點擊多少個或哪個按鈕,前兩個都是藍色。其餘的是紅色的。

任何想法?

感謝

回答

1

您使用的是錯誤的,因爲你使用不印字,和你的實際元素的索引位置發生了變化軌跡。嘗試爲每個插入到數組中的對象添加一個唯一的ID,然後通過它進行跟蹤。

http://jsfiddle.net/kku170cm/

這裏的賽道由工作:

<div style="float: left; height: 140px; width: 200px; border: 1px solid #cccccc; margin-bottom: 20px;" ng-repeat="p in data.persons">