在我的主控制器中,我有一个在页面上设置消息的功能:
function setMessageState(showSuccess, showError, message) {
vm.showSuccessMessage = showSuccess;
vm.showErrorMessage = showError;
vm.message = message;
}
在我的主控制器和服务中,如果服务成功或检索数据失败,我会通过调用此消息将消息中继给用户。
我已将其中一个转发器移动到一个处理表格数据迭代的指令中,但部分依赖于调用setMessageState函数并将参数反馈到主VM中。
任何人都可以协助我如何从包含params的指令调用我的setMessageState函数吗?
我确实尝试过包含setMessageState:"&"虽然没有定义重写setMessageState的问题,但它没有调用函数
我的指示是:</ p>
(function () {
'use strict';
//Define the Controller
angular
.module("tpAccStatus")
.directive("tpAccStatusTransactionRow", tpAccStatusTransactionRow);
function tpAccStatusTransactionRow() {
return {
scope: {
trans: "=tpAccStatusTransactionRow",
accountNumber: "="
},
restrict: "A",
replace: true,
templateUrl: "tpAccStatusTransactionRow.directive.html",
bindToController: true,
controller: "tpAccStatusTransactionRowCtrl",
controllerAs: "transCtrl"
};
}
})();
我的指令控制器有一个函数,它调用(需要调用)父控制器函数:
function requestStatementErrored(error) {
vm.busy = false;
vm.setMessageState(false, true, "Problem obtaining details");
}
由于
答案 0 :(得分:0)
该指令不会对您父级中的vm
有任何了解,相反,您可以将一个范围属性添加到您的指令中,然后绑定到父级中对该函数的引用
所以:
scope: {
trans: "=tpAccStatusTransactionRow",
accountNumber: "=",
messageStateFn: "="
}
然后在使用您的指令时,您可以这样设置:
<tr tpAccStatusTransactionRow messageStateFn="vm.setMessageState"></tr>
在指令控制器中:
function requestStatementErrored(error) {
scope.setMessageState(false, true, "Problem obtaining details");
}
答案 1 :(得分:0)
你可以从你的指令中做到这一点,
scope: {
trans: "=tpAccStatusTransactionRow",
accountNumber: "=",
setMessageState: '&'
},
function requestStatementErrored(error) {
vm.setMessageState({showSuccess: false, showError: true, message: "Problem obtaining details");
},
和HTML,
<tr tpAccStatusTransactionRow set-message-state="vm.setMessageState"></tr>