Javascript 如何从隔离作用域指令调用控制器方法?
我做错了什么 单击“单击我”后,状态块中的文本应显示一个新字符串。(实际上有4条新线路,但只有2条) HTML 属性名称应以短划线分隔: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
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'});