javascript - AngularJS - 从指令调用 Controller 函数

标签 javascript angularjs angularjs-directive

HTML

angular.element(document.querySelector('#dateControls')).append($compile("<search-date></search-date>")($scope));

指令

myApp.directive('searchDate', function ($compile, $rootScope,$timeout) {
    var linker = function (scope, element, attrs) {

            var template =  '<button class="btn btn-default" ng-click="dateSearch() id="playbackSearch" search-date">Search</button>';

            element.html(template);
            $compile(element.contents())(scope);

    };
    return {
        restrict: "EA",
        replace: true,
        link: linker
    };
});

Controller

$scope.dateSearch = function(){

    scope.userId = 1;
    myModuleService.getData(userId) //call service
    then(function (data) {
    console.log(data);

    }).catch(function (error) {
        throw error;
    });
};

如何调用 Controller 中定义的函数 dateSearch()

最佳答案

您可以在指令本身中添加 Controller 。因为您的 myModuleService 是外部服务

喜欢

controller:function($scope,myModuleService)
{

$scope.dateSearch = function(){

    scope.userId = 1;
    myModuleService.getData(userId) //call service
    then(function (data) {
    console.log(data);

    }).catch(function (error) {
        throw error;
    });
};

}

或按照您的风格

var controll:function($scope,myModuleService)
    {

    $scope.dateSearch = function(){

        scope.userId = 1;
        myModuleService.getData(userId) //call service
        then(function (data) {
        console.log(data);

        }).catch(function (error) {
            throw error;
        });
    };

    }
 return {
        restrict: "EA",
        replace: true,
        link: linker,
        controller:controll
    };

关于javascript - AngularJS - 从指令调用 Controller 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38930119/

相关文章:

javascript - 从 Angular JS ng-options/ng-repeat 中删除重复项

angularjs - 产品生态系统中的身份验证和授权

javascript - 如何从另一个指令切换隔离范围的变量

javascript - 请解释为什么它 "doesn' t 甚至改变数字的值是有意义的”

javascript - node.js 文件中所做的更改直到第二次运行才反射(reflect)

javascript - 处理 WooCommerce 选定的变体自定义字段条件显示

angularjs - 如何在 AngularJs 中的指令内修改范围

javascript - 与已编译的 Angular 指令 HTML 交互

javascript - AngularJS - 不使用 Angular 模板动态添加指令

JavaScript - eval 中的嵌套函数无法与 try/catch block 一起使用