2015-07-04 76 views
1

我做了一個AngularJS指令,它需要一個模型並將模型的值(在本例中爲「25mm」)轉換爲其他值視圖(在本例中,轉換爲英寸)。從AngularJS格式器指令中監聽父模型的變化

這裏是一個工作plnkr演示:http://plnkr.co/edit/fO1S9GcubHE57Pf7Kt9G?p=preview

演示,但是,並沒有達到預期效果。將下拉列表的值從「英寸」更改爲「英尺」後,我認爲該視圖將以適當的值重新呈現。不是這種情況。

我已經注意到,這是因爲我不更改「聽」,這就是爲什麼我把

scope.$watch("[convertFrom, convertTo]", function(n) { 

}); 

這留意的變化方面工作正常,但如果我取消註釋$watch,格式化程序停止工作。

我的第二個問題是,我正在推動功能到陣列$formatters$parsers。確切地說,每次下拉值變化時都有一個函數。

我的問題是:

  • 我怎樣才能觀看的變化,使格式化的工作?
  • 如何在每次更改下拉列表時在$formatter$parser陣列中插入新功能。

回答

0

我設法自己做。這裏是一個plunkr演示:http://plnkr.co/edit/jgF2QIP4QeA0Glcnn35B?p=preview

事實證明,我需要把我的$parser$formatter功能只有一次,並注意從外部的變化,則觸發「重新解析」或「重新格式化」:

scope.$watch("[convertFrom, convertTo]", function(n) { 
    ngModel.$modelValue = ''; 
});