0

我將這個jQuery自動完成插件修改爲一個指令 - https://github.com/devbridge/jQuery-AutocompleteAngular指令拋出雙向數據綁定

我有一個指令,它的工作原理:

App.directive('autocomplete', -> 
    return { 
    restrict: 'A', 
    link: ($scope, elem, attr) -> 
     console.log(attr.autocomplete) 
     elem.autocomplete({ 
     serviceUrl: '/videos/autocomplete/' + attr.autocomplete 
     }) 
    } 
) 

然而,當我選擇在自動完成列表中的東西,在雙向數據綁定弄亂了,只有輸入被更新。

有關如何解決此問題的任何想法?

+0

是這個咖啡標? – dandavis 2014-12-03 23:43:08

+1

有更改,但jQuery插件不會觸發摘要。所以你必須添加一個事件處理程序,以在發生某些變化時調用'$ scope。$ digest'。 – cgTag 2014-12-03 23:47:29

+0

@dandavis好的! – chintanparikh 2014-12-04 00:14:42

回答

0

Necroposting這一塊,因爲我認爲這可能是有益的很多人知道這個偉大的文章中,我提到:)

角有一個方法來觀察我們的對象的變化,它依賴於JavaScript的「基於回合」特性。這在this awesome article by Jim Hoskins中解釋得非常清楚。

基本上,Angular會檢查循環中的變化,但是當這些循環之間發生變化時,無法知道它需要再次執行檢查! (很simplicistic交代;再次,是指the article

底線,我們需要告訴它,我們改變了一些東西,所以讓我們說,你的選擇會觸發執行action()

您只需要包裹的handler()action分成$scope.$apply

function handler(){ 
    $scope.$apply(function(){ 
     action(); 
    }); 
}