2014-03-05 23 views
0

我想創建一個指令。這裏是指令的蹲點:plunkerngModel綁定一個鍵擊中晚了

ngModel值是晚於顯示的一個按鍵:例如,如果我有顯示值「abc」,那麼ngChange函數收到的ngModel是「ab」。

我不明白的是..我在屏幕上打印的值和我傳遞給ngChange的值都是相同的ngModel,那麼它們如何具有不同的值?

請幫忙!!!

編輯

我使用「&」的一次擊鍵目前下旬收到ngChange ..但如果我用得到ngChange「=」的值是同步的,但ngChange叫了太多次。 。

我已經更新了plunker顯示問題

回答

0

問題是值傳遞到NG-變化應該是$ viewValue而不是$ modalValue,因爲$ viewValue並不總是使它成爲$ modalValue ...

1

從與分離範圍內的指令調用控制器或父母範圍內的功能,你需要傳遞一個對象:

<cs-input options="fields.userId" ng-model="abc.userId" 
ng-change="changeFunction(userId)"></cs-input> 

JS

return '<input type="text" name="myfield" ' + 
     'data-ng-change="ngChange({userId:ngModel})" data-ng-model="ngModel"/>'; 
+0

但那麼,我不知道該指令中的函數將從html標記中調用的參數,用戶可以傳遞任何參數... – harishr

+0

這是作爲參數傳遞的模型。只要給解決方案一個鏡頭。 – AlwaysALearner

+0

它不能正常工作..在plunker中測試 – harishr

0

您已經ngModel,你爲什麼還需要ngChange?您可以改用$ watch。

http://plnkr.co/edit/85Su4Dewc0kpXttuY9sp?p=preview

$scope.id = 'x'; 
    $scope.$watch('id', function(newValue, oldValue) { 
    $scope.watchedNewValue = newValue; 
    $scope.watchedOldValue = oldValue; 
    });