2014-11-27 5 views

답변

1

HTML에서 체크 박스 목록을 표시 할 수있는 방법 저를 제안 할 수 업데이트 :

HTML :

<div ng-app="app"> 
    <div ng-controller="TodoCtrl"> 
     <!--<span ng-repeat="(checkboxName, checkboxValue) in checkboxes"> 
      {{ checkboxName }} 
      <input type="checkbox" ng-model="checkboxValue"/> 
     </span>--> 
     <checklist checkboxes="checkboxes" on-change="checkboxInfo(name, value)"></checklist> 
    </div> 
</div> 

자바 스크립트 :

var app = angular.module('app', []); 
app.controller('TodoCtrl', function($scope) { 
    $scope.foo = true; 
    $scope.bar = false; 
    $scope.baz = true; 
    $scope.baa = true; 

    $scope.checkboxes = { 
     'foo': $scope.foo, 
     'bar': $scope.bar, 
     'baz': $scope.baz, 
     'baa': $scope.baa 
    }; 

    // Non-encapsulated activity: updates parent scope values 
    $scope.checkboxInfo = function(name, value) { 
     console.log('Checkbox "' + name + '" clicked. It is now: ' + value + '.'); 
     $scope[name] = value; 
    }; 

    // This shouldn't do anything if we delete '$scope[name] = value', since we isolated the scope: 
    $scope.$watchCollection('[foo, bar, baz, baa]', function() { 
     console.log($scope.foo, $scope.bar, $scope.baz, $scope.baa); 
    }); 
}) 
.directive('checklist', function($timeout) { 
    return { 
     restrict: 'E', 
     scope: { 
      checkboxes: '=', // create an isolate scope w/ 2-way binding 
      onChange: '&'  // execute a function in the parent scope 
     }, 
     template: 
      '<span ng-repeat="(checkboxName, checkboxValue) in checkboxes">' + 
       '{{ checkboxName }}' + 
       '<input type="checkbox" ng-model="checkboxValue" ng-change="onChange({name:checkboxName, value:checkboxValue})"/>' + 
      '</span>', 
     link: function(scope, element, attrs) { 
      // Add encapsulated activity as necessary 
     } 
    }; 
}); 
+0

이 gyeh 안녕, 이것은 나를 위해 일하지만, 스피없는 선택하거나 확인란을 선택 취소합니다. true 또는 false 이외의 다른 옵션은 true가 나를 선택 취소하도록 허용하지 않으므로 false는 나를 선택할 수 없습니다. –

+0

원본 코드를 약간 변경하여 모든 작업을 수행 할 수 있습니다. "를' antimatter

+0

체크 상자 값을 변경하려면 각도의 지시어 속성 인'ng-true-value'와'ng-false-value'를 사용할 수 있습니다 : https://code.angularjs.org/1.2.26/docs/api/ 입력/입력/입력 % 5Bcheckbox % 5D – antimatter

관련 문제