如何在angularjs或bootstrap中使用checklistbox

时间:2014-11-27 07:01:12

标签: angularjs twitter-bootstrap

任何人都可以建议我如何在angularjs中显示复选框列表

1 个答案:

答案 0 :(得分:1)

HTML:

<div ng-app="app">
    <div ng-controller="TodoCtrl">
        <span ng-repeat="(checkboxName, checkboxValue) in checkboxes">
            {{ checkboxName }}
            <input type="checkbox" ng-model="checkboxValue"/>
        </span>
    </div>
</div>

使用Javascript:

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

<强>更新

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>

使用Javascript:

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
        }
    };
});