2013-07-23 6 views
0

Как я могу установить следующий флажок или нет на основе атрибута bindto? Я пробовал element.checked = true и он не установил флажок. Какие-либо предложения?Угловая директива не проверена

directive('slideToggle', function() { 
    return { 
     replace: true, 
     restrict: 'E', 
     scope: { 
      bindto: '=' 
     }, 
     template: '<input type="checkbox" name=""/>', 
     link: function (scope, element, attrs) { 
      console.log(scope); //shows scope.bindto as "true" 
      console.log(scope.bindto); //undefined 
     } 
    } 
}). 

использование:

<slide-toggle bindTo="myItem.active"></slide-toggle>

+0

это шаблон должен иметь bindTo верблюжий и директиву bindto строчных букв? –

ответ

1

bindto изначально не определен, так как директива связана прежде, чем объем обновляется родительского контроллера. Вы должны слушать для изменения объема:

link: function (scope, element, attrs) { 
    scope.$watch("bindto", function (newValue) { 
     console.log(scope.bindto); //undefined 
    }); 
} 

Это выглядит как «истина» в вашей консоли на «сферы» с того времени, которое потребовалось для вас, чтобы нажать на «Scope» объект был достаточно долго для него быть обновленным.

+0

Хотя это правильно, мне также нужно было использовать 'ng-model', как предложено @Ajay – Webnet

2

Вы должны использовать нг-модель свойство на флажке см обновленного код

<body ng-controller="test" > 
      <input ng-model="myItem.active" /> 
     <slide-toggle bindto="myItem.active"></slide-toggle> 
      <script> 
       var app = angular.module('customControl', []) 
       app.controller('test', function ($scope) { 
        $scope.userContent = 'hello'; 
        $scope.myItem = { active: true }; 


       }); 

       app.directive('slideToggle', function() { 
        return { 
         replace: true, 
         restrict: 'E', 
         scope: { 
          bindto: '=bindto' 
         }, 
         template: '<input type="checkbox" ng-model= "bindto"/>', 
         link: function (scope, element, attrs) { 

         } 
        } 
       }) 
+0

+1 для другой половины ответа –

Смежные вопросы