$ watch不能处理angularjs中的指令属性

时间:2014-05-08 01:38:15

标签: javascript angularjs

不确定发生了什么,但由于某种原因,当我在输入字段中输入内容时,$ watch不会触发handleChange函数。

HTML:

<div data-suggestion-search data-search="search_string">
    <input data-ng-model="search_string"/>
</div>

JS:

var suggestionSearch = function ($parse){
return {
    restrict: "A",
    transclude: true,
    scope: {
        search: '=search'
    },
    templateUrl: 'views/search.html',
    link:function(scope, lElement, attrs){
        scope.$watch("search", handleChange, true);
        function handleChange(data){
            console.log("search", scope.search);
        }
    }
}

}

模板:

<div class="findus-search-container" ng-transclude>

</div>

1 个答案:

答案 0 :(得分:1)

我不太熟悉w / transclusion如何处理范围,但我相信它为指令创建了一个新的范围,并为转换的内容创建了一个单独的范围,因此通过将相同的值绑定到两个转换元素和翻译内容。

这是一个工作plnkr,它保持一个单独的范围变量同步w / search_string,名为search_string_binder,可以用来绑定到你的指令

虽然这可能不是最有说服力的解决方案,但它应该让你超越阻碍你的事情,直到有更多的翻译知识的人可以看看这个。