2013-07-15 80 views
1

我正在測試來自內部指令的綁定變量的行爲,我似乎無法獲取刷新的視圖。該模型正根據控制檯日誌進行更新,並且我調用$ appy(),但由於某種原因視圖拒絕更新。這裏是jsfiddle來自內部指令的angularjs綁定值更改不會反映到外部

這裏的HTML

<div ng-app="foo"> 
    <div ng-controller="MyCtrl"> 
     <div my-directive val="val" checked="checked" refresh="refresh"></div> 
     <p>val (outside directive): {{val}}<p/>   
     <p>checked (outside directive): {{checked}}<p/>   
    </div> 
</div> 

這裏的JavaScript的

angular.module('foo', []).directive('myDirective', function() { 
    return { 
     restrict: 'A', 
     scope: { 
      val: "=", 
      checked: "=", 
      refresh: "=" 
     }, 
     template: '<p>val (inside directive): {{val}}</p>' + 
        '<p>checked (inside directive): {{checked}}</p>' + 
        '<input type="checkbox" ng-model="checked">checked', 
     link: function(scope, element, attrs) { 
      var count = 0; 
      //scope.val = "initialized";    
      scope.$watch('checked', function() { 
       scope.val = "new value" + count; 
       count += 1; 
       console.log("updated val is: " + scope.val); 
       scope.refresh(); 
      }); 
     } // link 
    }; // return 
}); // angular.module 

function MyCtrl($scope) { 
    $scope.val = "initial value"; 
    $scope.checked = false; 
    $scope.$watch('val', function(newVal) { 
     console.log("newVal is: " + newVal); 
    }); 
    $scope.refresh = function() { 
     // none of the following lines make a difference 
     if(!$scope.$$phase) $scope.$apply(); 
     // $scope.$apply(); 
     // if(!$scope.$$phase) $scope.$digest(); 
     // $scope.$digest();   
     console.log("val is: " + $scope.val); 
     console.log("checked is: " + $scope.checked);   
    }; // refresh  
} // MyCtrl 
+0

你正在使用哪個角度js版本 –

+1

似乎是一個小提琴問題看到工作plunker副本http://plnkr.co/edit/3xbOwCDuhBK5vO8a7hEp?p=preview –

回答

1

它的工作原理,如果你只是在你的提琴改變angularjs版本1.1.1,從1.2.1。

相關問題