在指令

时间:2015-10-23 15:34:31

标签: angularjs angularjs-directive

尝试在指令中调用函数:

    angular.module('abc').directive('autocomp', function ()   {
    return {
            replace: true,
            scope: true,
            controller: 'Controller',
            controllerAs: 'ctrl',
            srchtxt: '@',                
             scope: {
                    src: '&'
             },
                templateUrl: '/dom/abc/auto.html',
                link: function (scope, element, attrs) {
                    scope.$watch('srchtxt', function () {
                        scope.src(scope.srchtxt});
                    });
                }
           }
         });

=============================================== =========================== 控制器内部的方法:

    function search(srchtxt) {
         console.log('srchText:', srchText);            
     }

=============================================== ============================     HTML:

<abc src="rc.search()"></abc>

我正在为md-autocomplete控件编写一个指令,该方法名称可以作为HTML pagee中的属性传递给哪个,然后尝试在指令中执行该方法。 在控件中的textchange上有一个监视器,我在其中调用要执行的方法(scope.src(scope.srchText)))

当我在自动完成控件中输入内容时,我收到以下错误: TypeError:不能在&#39;中使用&#39;运营商搜索&#39; rc&#39;在g

任何人都可以建议我错过了什么或做错了吗?

1 个答案:

答案 0 :(得分:0)

使用&将控制器方法绑定到指令时,必须在html中声明确切的参数,如

<sml-auto-complete datasrc="cr.query(searchText)"></sml-auto-complete>
//                                        ^ 

然后,当您从指令调用此方法时,您需要将参数作为对象传递,如

scope.$watch('searchText', function () {
    scope.datasrc({searchText: scope.searchText}); //not simply scope.datasrc(scope.searchText)
});

选中此demo