2016-12-20 66 views
0

我想鏈接兩個datepicker指令我將模型傳遞給其中一個指令,並且當值被改變時我需要運行幾個方法但是當值改變範圍時。在鏈接函數中不會被解僱。我一直在試圖解決這個問題在過去兩天無濟於事......我拋出的任何東西都不起作用..有人可以看看並解釋什麼是錯的嗎?

我設置一個plunker http://plnkr.co/edit/VTSElDjniyN8wRwsuT1T?p=preview

下面

UPDATE 21/12/2016更新plunker鏈接作爲初始鏈路Jacvascript代碼是不正確的。

angular.module('ui.bootstrap.demo').directive('endDatepicker', function() { 
return { 
    scope: { 
     model: "=", 
     endDate: "=", 
    }, 
    templateUrl: 'datepicker-template.html', 
    link: function(scope, element, attr) { 
     scope.$watch('endDate', function(newValue,oldValue){ 
      console.log("Watch fired" + scope.endDate) 
      scope.dateOptions.minDate = scope.endDate; 
     },true) 


    scope.popupOpen = false; 
     scope.openPopup = function($event) { 
      $event.preventDefault(); 
      $event.stopPropagation(); 
      scope.popupOpen = true; 
     }; 

     scope.dateOptions = { 
     startingDay: 1, 
     minDate: moment.utc()._d 
     } 
     scope.open = function($event) { 
     $event.preventDefault(); 
     $event.stopPropagation(); 
     scope.opened = true; 
     }; 

    } 
}; 
}); 
+1

您的PLUNK和上面的代碼不匹配。 –

+0

嘗試刪除手錶末尾的真正選項,因爲據我所知endDate不是一個對象。 –

回答

0

由於您所傳遞的modeldirectives,更新不反映在一個當其中一個改變,因爲model坐在directive scope而非parent scope,而不是看一個指令模式引發事件當一個模型的變化,並注意在第二模型中的事件,做你的操作有:

首先指令:

link: function(scope, elm, attrs) { 

    elm.bind('blur', function() { 
     var currentValue = elm.val(); 
     scope.$emit('FIRST_DATE_UPDATED', currentValue); 
    }); 
} 

並在第二個指令中:

link: function(scope, elm, attrs) { 

    scope.$on('FIRST_DATE_UPDATED', function(e, data){ 
     var newDateValue = data; 
     //do your stufdf here 
    }); 
} 
+0

感謝大家的投入。是的,鏈接是不正確的,這是我的第一個問題在棧上,所以我的雙手有點顫抖:) Yaser感謝開眼界我意識到我的end-datepicker指令是ng-controller範圍的頂峯,所以它坐在它自己的孤立作用域...我現在管理的是獲取作用域。$ watch方法來工作並捕獲新的值,但是我嘗試了你的建議,並在$ watch解決方案中看看如何在情況出現時使用它,但是我無法使它工作。把正確的鏈接http://plnkr.co/edit/VTSElDjniyN8wRwsuT1T?p=preview – MrPZzZ

相關問題