AngularJS复选框里面的指令

jen*_*gar 2 angularjs angularjs-directive angularjs-scope

所以我有一个指令,里面有一个复选框.我需要在复选框的值更改时进行Web服务调用.如何在单击时获取该复选框的值?我希望复选框仅限于指令的范围.

myModule.directive('test', function() {
    return {
        restrict: 'A',
        replace: true,
        scope:{},
        template:   
            '<div>'+
                '<input type="checkbox" ng-click="toggleRoomLock()" name="lockRoom" value="lock" ng-model="lockRoom">'+
            '</div>',
        link: function(scope, element, attrs) {
            scope.toggleRoomLock = function(){
                //GET VALUE OF CHECKBOX HERE
            };
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用该值,scope.lockRoom但我未定义.有什么建议?

Mar*_*tin 5

最简单的方法是ng-click从模板中删除属性并在模型上放置监视.将链接功能更改为:

function (scope, element, attrs) {
    scope.lockRoom = false; // initialize to unchecked

    scope.$watch('lockRoom', function (value) {
        // value will contain either true or false depending on checked state
    });
}
Run Code Online (Sandbox Code Playgroud)

$watch允许您收听模型上的更改(基本上是添加的对象scope).

示例plunker(记录到控制台的值).