這裏是我的指令:通功能,以指令
module app.directives {
interface IDmDeleteIconController {
doAction(): void;
}
class DmDeleteIconController implements IDmDeleteIconController {
static $inject = ['$scope'];
constructor(public $scope:any) {
}
doAction() {
console.log('1');
this.$scope.dmAction();
}
}
export class DmDeleteIcon implements ng.IDirective {
templateUrl = './app/common/directives/deleteIcon/deleteIcon.html';
controller = DmDeleteIconController;
controllerAs = 'dmDeleteIconVm';
scope = {
dmAction: '&'
};
link = (scope: any, element: ng.IAugmentedJQuery, attrs: ng.IAttributes, ctrl: any) => {
console.log('2');
scope.dmAction();
}
static factory(): ng.IDirectiveFactory {
const directive =() => new DmDeleteIcon();
directive.$inject = [];
return directive;
}
}
angular.module('myApp').directive('dmDeleteIcon', DmDeleteIcon.factory());
}
在這裏,我嘗試使用它:
當我打開網頁,我會在控制檯中2
(從link
函數),但我沒有從我傳遞給指令的函數中獲得hello
。
爲什麼以及如何解決?
更新:
這裏是一個指令的模板:
a.item-detail-delete-icon(class="form-image-link" href="" ng-click="dmDeleteIconVm.doAction()")
這裏是HTML到我的玉編譯:
<dm-delete-icon dm-action="console.log('hello');"></dm-delete-icon>
更新2:
我試圖用這樣的:
<dm-delete-icon dm-action="vm.foo()"></dm-delete-icon>
其中:
foo(): void {
console.log("hello");
}
控制器的功能。
更新3:
如果我試圖調試代碼,我會得到這樣的:
您是否可以在整個HTML標籤中使用它? – toskv
你是指我從Jade那裏得到的指令模板或HTML嗎?我已將它們都添加到我的問題中 – demas
您沒有爲屬性「dm-action」提供函數。 'console.log'不是一個函數,所以之後應該如何用'dmAction()'調用它。 – FlorianTopf