Javascript 如何从隔离作用域指令调用控制器方法?

Javascript 如何从隔离作用域指令调用控制器方法?,javascript,angularjs,directive,Javascript,Angularjs,Directive,我做错了什么 单击“单击我”后,状态块中的文本应显示一个新字符串。(实际上有4条新线路,但只有2条) HTML 属性名称应以短划线分隔: scope.clickHandler({message:'"I\'m from directive."\n'}); var app = angular.module('myApp', []); app.controller('myController', ['$scope', '$timeout', function myController

我做错了什么

单击“单击我”后,状态块中的文本应显示一个新字符串。(实际上有4条新线路,但只有2条)

HTML 属性名称应以短划线分隔:

scope.clickHandler({message:'"I\'m from directive."\n'});

var app = angular.module('myApp', []);

app.controller('myController', ['$scope', '$timeout',
    function myController ($scope, $timeout) {

        $scope.status = 'Start controller.\n'; // update status
        $scope.someData = 'Hello from controller !!!\n';
        $scope.handler = function handler (message) {
            $scope.status += $scope.someData; // must update status, but doesn't do it
            $scope.status += 'Message from directive: ' + message; // must too
        }

    }]);

app.directive('myDirective', function myDirective () {
    return {
        scope: { clickHandler: '&', status: '=' },
        link: function postLink (scope, element, attr) {
            scope.status += 'Start link in myDirective.\n'; // update status
            element.on('click', function onClick (event) {
                scope.status += 'Click is fired.\n'; // update status
                scope.$apply(function scopeApply () {
                    scope.status += 'In apply context.\n'; // update status
                    scope.clickHandler('"I\'m from directive."\n');
                });
            });
        }
    }
});
<button my-directive status="status" click-handler="handler(message)">
    Click me
</button>
scope.clickHandler({message:'"I\'m from directive."\n'});