@@ -817,6 +817,57 @@ describe('directive',function(){
817
817
} ) ;
818
818
} ) ;
819
819
820
+ it ( 'should not clear the model when using multiple checkboxes targeting the same model array' , function ( ) {
821
+
822
+ inject ( function ( $compile , $rootScope ) {
823
+ var scope = $rootScope . $new ( ) ;
824
+ scope . person = {
825
+ "names" : [ "foo" ]
826
+ } ;
827
+
828
+ scope . schema = {
829
+ "type" : "object" ,
830
+ "properties" : {
831
+ "names" : {
832
+ "type" : "array" ,
833
+ "items" : {
834
+ "type" : "string" ,
835
+ "enum" : [ "foo" , "bar" ]
836
+ }
837
+ }
838
+ }
839
+ } ;
840
+
841
+ scope . form = [
842
+ 'names' ,
843
+ 'names' ,
844
+ { key : "names" , type : "checkboxes" , titleMap : { 'foo' : 'Foo' , 'bar' : 'Bar' } } ,
845
+ { key : "names" , type : "checkboxes" , titleMap : { 'foo' : 'Foo' , 'bar' : 'Bar' } }
846
+ ] ;
847
+
848
+ var tmpl = angular . element ( '<form sf-schema="schema" sf-form="form" sf-model="person"></form>' ) ;
849
+
850
+ $compile ( tmpl ) ( scope ) ;
851
+ $rootScope . $apply ( ) ;
852
+
853
+ var foo = tmpl . children ( ) . eq ( 0 ) . find ( 'input[type=checkbox]' ) . eq ( 0 ) ;
854
+ var bar = tmpl . children ( ) . eq ( 3 ) . find ( 'input[type=checkbox]' ) . eq ( 1 ) ;
855
+
856
+ foo . prop ( 'checked' ) . should . be . true ;
857
+ bar . prop ( 'checked' ) . should . be . false ;
858
+ scope . person . names . length . should . be . equal ( 1 ) ;
859
+ scope . person . names . join ( ',' ) . should . be . equal ( 'foo' ) ;
860
+
861
+ bar . click ( )
862
+ scope . person . names . length . should . be . equal ( 2 ) ;
863
+ scope . person . names . join ( ',' ) . should . be . equal ( 'foo,bar' ) ;
864
+
865
+ foo . click ( ) ;
866
+ scope . person . names . length . should . be . equal ( 1 ) ;
867
+ scope . person . names . join ( ',' ) . should . be . equal ( 'bar' ) ;
868
+ } ) ;
869
+ } ) ;
870
+
820
871
it ( 'should use radio buttons when they are wanted' , function ( ) {
821
872
822
873
inject ( function ( $compile , $rootScope ) {
0 commit comments