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(); 
    }); 
}