0

Я совершенно новой для AngularJs, я взял учебники, я застрял из последних 5 часов на следующей задаче,AngularJs Scope, значение переменной переоденусь

Я использую twitterbootstrap и модальный я имел в виду bootstrap modal

Он показывает мне модальный один раз, когда я нажимаю на слот, и сохранение также работает в первый раз, но во второй раз он вызывает метод addBooking, инициализирующий объект currentBooking, но не отображающий модальный.

это мой взгляд в haml, простой показ ботстрапа модальный и его работающий штраф.

#scheduler{ :'ng-controller' => 'SchedulerCtrl', :scheduler => true, :data =>{:interval => @interval, :restaurant_id => @restaurant_id} } 

    #booking-editor.modal.hide.fade{ :'aria-hidden' => true, :'aria-labelledby' => "bookingEditorLabel", :role => "dialog", :tabindex => "-1", :'booking-editor' => 'currentBooking', :'ng-controller' => 'BookingEditorCtrl' } 
    .modal-body 
     %input{ :type => "text", :'ng-model' => "currentBooking.name" } 
    .modal-footer 
     %button.btn{ :'aria-hidden' => true, :'data-dismiss' => "modal" } Close 
     %button.btn.btn-primary{ :'ng-click' => 'saveBooking(currentBooking)' } Save Booking 

Планировщик контроллер;

$scope.addBooking = (slot) -> 
    $scope.currentBooking = { name: "John Doe", new: true } 

BookingEditorCntl

@BookingEditorCtrl = ['$scope', '$resource', ($scope, $resource) -> 
    $scope.saveBooking = (booking) -> 
    $scope.currentBooking = null 
] 

Directive часть для манипулирования DOM

.directive 'bookingEditor', -> 
    restrict: 'A' 
    link: (scope, element, attrs, ctrl) -> 
     scope.$watch attrs.bookingEditor, -> 
     if scope[attrs.bookingEditor] 
      $(element).modal(keyboard: true) 
      $(element).modal('show') 
     else 
      $(element).modal('hide') 

Любые предложения или мысли, пожалуйста. Благодарю.

ответ

0

Вы не указали, какой модальный плагин вы используете, поэтому немного сложно помочь. Однако, из вашего примера, похоже, вы звоните $(element).modal(keyboard: true) несколько раз. Это может объяснить, почему вы получаете сообщение об ошибке. Если это так, что-то вроде следующего может помочь:

В BookingEditorCtrl:

$scope.modalInitialized = false; 

В bookingEditor директиве:

if(scope.modalInitialized === false) 
    $(element).modal(keyboard: true) 
$(element).modal('show') 
+0

м с использованием начальной загрузки, а модальный я имел в виду bootstrap modal, http://twitter.github.io/bootstrap/javascript.html#modals –

+0

Плюс, пожалуйста, уточните, что именно вы подразумевали под клавиатурой m call: true multiple время? –