2013-09-16 55 views
1

沒有反映我已經定義,像這樣一個指令:角JS指令模式改變的功能

.directive("datepicker", function() { 
    return { 
     restrict: 'E', 
     scope: { 
      date: '=', 
      filterfnc: '&' 
     }, 
     replace: true, 
     controller: ["$scope", '$http', '$resource', 'services', function ($scope, $http, $resource, services) { 
     $scope.RunFilter = function() { 
      $scope.date = '9-16-2013'; 
      $scope.filterfnc(); 
     } 
    }] 

我訪問指令,像這樣:

<datepicker date="MyDate" filterfnc="LoadValue()"></datepicker> 

指明MyDate是一個模型值,這將是在函數LoadValue()中使用。我遇到的問題是,即使該值在指令中設置,它不會顯示在LoadValue函數中。

$scope.MyDate= ''; 

    $scope.LoadValue= function() { 
     var params = { Date: $scope.MyDate }; 
     ... 
    } 

不知道我在做什麼錯。一切似乎都是正確的,我沒有得到任何錯誤。

+0

我沒有看到'調用RunFilter()'; – AlwaysALearner

+0

RunFilter()通過一些其他操作被調用。這不是我的問題。當我調試它時,日期被設置,然後filterfnc會被觸發。當我進入{需要我到LoadValue}時,我發現$ scope.MyDate仍然設置爲'' – AnthonySG

回答

0

這是很奇怪的,我很樂意看到其他的答案。它似乎需要雙向綁定一段時間來更新或什麼。我得到它的工作是這樣的:

app.directive("datepicker", function ($timeout) { 
    return { 
     restrict: 'E', 
     scope: { 
      date: '=', 
      filterfnc: '&' 
     }, 
     replace: true, 
     controller: function ($scope) {    
      $scope.RunFilter = function() {      
       $scope.date = '9-16-2013'; 
       $timeout(function(){ 
        $scope.filterfnc(); 
       });     
      } 
      $scope.RunFilter(); 
     } 
    } 
}); 
+0

這很有趣。它做了詭計。 – AnthonySG

0

不能確定,但​​我想你應該要麼使用LoadValue,沒有(),作爲filterfnc屬性值,或有LoadValue定義爲

$scope.LoadValue = function() { 
    return function() { 
     var params = { date: $scope.MyDate}; 
     //The rest of your function 
    }; 
}