@@ -8,12 +8,10 @@ function idDirective(name, selector) {
8
8
link : function ( scope , element , attr ) {
9
9
var oldVal ;
10
10
11
- // ?
12
- scope . $watch ( attr [ name ] , ngClassWatchAction , true ) ;
11
+ scope . $watch ( attr [ name ] , ngIdWatchAction , true ) ;
13
12
14
- // ? What is ngClassWatchAction
15
13
attr . $observe ( 'id' , function ( value ) {
16
- ngClassWatchAction ( scope . $eval ( attr [ name ] ) ) ;
14
+ ngIdWatchAction ( scope . $eval ( attr [ name ] ) ) ;
17
15
} ) ;
18
16
19
17
@@ -22,28 +20,25 @@ function idDirective(name, selector) {
22
20
// jshint bitwise: false
23
21
var mod = $index & 1 ;
24
22
if ( mod !== old$index & 1 ) {
25
- var classes = arrayClasses ( scope . $eval ( attr [ name ] ) ) ;
26
- mod === selector ?
27
- addClasses ( classes ) :
28
- removeClasses ( classes ) ;
23
+ var id = typeofId ( scope . $eval ( attr [ name ] ) ) ;
24
+ if ( mod === selector ) {
25
+ replaceId ( id ) ;
26
+ }
29
27
}
30
28
} ) ;
31
29
}
32
30
33
- //function addIdClasses(classes) {
34
- function addId ( id ) {
35
- // ? what is digestClassCounts?
36
- var newClasses = digestClassCounts ( classes , 1 ) ;
37
- attr . $addClass ( newClasses ) ;
31
+ // Used in place of addClass and removeClass, as it must be unique.
32
+ function replaceId ( id ) {
33
+ attr . $attr ( 'id' , id )
38
34
}
39
35
40
- function removeClasses ( classes ) {
41
- var newClasses = digestClassCounts ( classes , - 1 ) ;
42
- attr . $removeClass ( newClasses ) ;
36
+ // New
37
+ function uniqueId ( id ) {
38
+ /* Check if the id is unique throughout the view */
43
39
}
44
40
45
41
// This is the joining function. This shouldn't exist
46
- // There can only be one. highlander.
47
42
function digestIdCounts ( ids , count ) {
48
43
var idCounts = element . data ( '$idCounts' ) || { } ;
49
44
var idsToUpdate = [ ] ;
@@ -76,12 +71,12 @@ function idDirective(name, selector) {
76
71
77
72
function ngIdWatchAction ( newVal ) {
78
73
if ( selector === true || scope . $index % 2 === selector ) {
79
- var newClasses = arrayClasses ( newVal || [ ] ) ;
74
+ var newId = typeofId ( newVal || [ ] ) ;
80
75
if ( ! oldVal ) {
81
- addClasses ( newClasses ) ;
76
+ addId ( newId ) ;
82
77
} else if ( ! equals ( newVal , oldVal ) ) {
83
- var oldClasses = arrayClasses ( oldVal ) ;
84
- updateClasses ( oldClasses , newClasses ) ;
78
+ var oldId = typeofId ( oldVal ) ;
79
+ updateId ( oldId , newId ) ;
85
80
}
86
81
}
87
82
oldVal = copy ( newVal ) ;
@@ -103,21 +98,26 @@ function idDirective(name, selector) {
103
98
return values ;
104
99
}
105
100
106
- function arrayClasses ( classVal ) {
107
- if ( isArray ( classVal ) ) {
108
- return classVal ;
109
- } else if ( isString ( classVal ) ) {
110
- return classVal . split ( ' ' ) ;
111
- } else if ( isObject ( classVal ) ) {
112
- var classes = [ ] , i = 0 ;
113
- forEach ( classVal , function ( v , k ) {
101
+ function typeofId ( idVal ) {
102
+ //if (isArray(classVal)) {
103
+ // return classVal;
104
+ //} else if (isString(classVal)) {
105
+ if ( isString ( idVal ) ) {
106
+ return idVal ;
107
+ } else if ( isObject ( idVal ) ) {
108
+ var ids = [ ] , i = 0 ;
109
+ forEach ( idVal , function ( v , k ) {
110
+ // This should push for all classes. That isn't ideal.
111
+ // We want it to only push for one.
114
112
if ( v ) {
115
- classes . push ( k ) ;
113
+ ids . push ( k ) ;
114
+ // This should make it break after the first truthy value.
115
+ return ids ;
116
116
}
117
117
} ) ;
118
- return classes ;
118
+ return ids ;
119
119
}
120
- return classVal ;
120
+ return idVal ;
121
121
}
122
122
} ] ;
123
123
}
0 commit comments