2014-01-21 34 views

回答

1

你应该做一两件事来使一切工作:力AngularJS实际上使用jQuery

AngularJS在其源代码中包含jQlite,但它与jQuery不一样。如果您在之前包含jQuery angular.js,那么Angular将使用它来代替自己的实现。

因此只需要改变这个index.html中:

<script data-require="[email protected]*" data-semver="2.0.3" src="http://code.jquery.com/jquery-2.0.3.min.js"></script> 
<script data-require="[email protected]*" data-semver="1.2.9" src="http://code.angularjs.org/1.2.9/angular.js"></script> 

(jQuery是angular.js之前)

working Plunker

9

更好的I检查指令可以在这里找到:https://github.com/fronteed/iCheck/issues/62(wajatimur)

return { 
    require: 'ngModel', 
    link: function($scope, element, $attrs, ngModel) { 
     return $timeout(function() { 
      var value; 
      value = $attrs['value']; 

      $scope.$watch($attrs['ngModel'], function(newValue){ 
       $(element).iCheck('update'); 
      }) 

      return $(element).iCheck({ 
       checkboxClass: 'icheckbox_flat-aero', 
       radioClass: 'iradio_flat-aero' 

      }).on('ifChanged', function(event) { 
       if ($(element).attr('type') === 'checkbox' && $attrs['ngModel']) { 
        $scope.$apply(function() { 
         return ngModel.$setViewValue(event.target.checked); 
        }); 
       } 
       if ($(element).attr('type') === 'radio' && $attrs['ngModel']) { 
        return $scope.$apply(function() { 
         return ngModel.$setViewValue(value); 
        }); 
       } 
      }); 
     }); 
    } 
};