Angular指令$观察jquery小部件初始化问题

时间:2014-01-30 15:57:13

标签: javascript jquery angularjs angularjs-directive

我做了一个包含freebases jquery搜索小部件的指令。我希望用户能够动态更改搜索语言,因此我使用$ observe来观看'lang'属性。

问题是每次属性更改时插件都会重新初始化,但不会结束先前初始化的执行。当用户选择术语时,我将其添加到数组中。如果已修改lang属性,则会为属性的每次更改添加所选术语。

我可以过滤数组,只允许具有相同ID的项目出现一次,但我想知道是否有更好的解决方案。

See plunker here.

指令:

directive('suggest', function() {
    return {
        restrict: 'E',
        template: "<input type='text'>",
        replace:true,
        scope:{onSelect:'&'},
        link: function(scope, element, attrs) {

            attrs.$observe('lang', function(value) {
                $(element).suggest({
                    lang: value
                })
                .bind("fb-select", function(e, info) { 
                    console.log(info);
                    scope.onSelect({data:info});
                    scope.$apply();
                });
            });

        }
    };
});

0 个答案:

没有答案