我正在使用angular 1.4,我正在创建一个类似于新组件助手的指令/组件:
var invoiceSearchComonent = ['invoiceDataService', function (invoiceDataService) {
return {
restrict: 'E',
scope: {},
templateUrl: path.fromRoot("/application/invoices/views/invoicesearch.html"),
controller: InvoiceSearchController,
controllerAs: 'vm',
bindToController: true
};
}];
module.directive('invoicesearch', invoiceSearchComonent);
我在模板和其他控件中有一个预先输入,我想让外界知道搜索条件已经改变。
当用户输入发生变化时,使用$emit
发布事件的最佳方法是什么?我真的不喜欢这种使用字符串名称值来发布事件的方法。
在反应和余烬中,可以传递动作函数,但我是新手做出反应,除了$emit
之外,我不知道实现这一目标的最佳方法。
答案 0 :(得分:2)
很难说不知道你究竟想要做什么,但你可以将变量绑定到新范围,所以像
var invoiceSearchComonent = ['invoiceDataService', function (invoiceDataService) {
return {
restrict: 'E',
scope: {userInput: '='},
templateUrl: path.fromRoot("/application/invoices/views/invoicesearch.html"),
controller: InvoiceSearchController,
controllerAs: 'vm',
bindToController: true
};
}];
然后使用指令
<invoice-search user-input=vm.userInput></invoice-search>
然后每当userInput变量在指令模板内发生变化时,此更改将使其进入外部范围。
此外,您可以使用类似的绑定将函数传递给指令(&amp; replaces =)