我正在使用角度 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
发布事件的最佳方式是什么? 我真的不喜欢这种使用字符串名称值发布事件的方法。
在 react 和 ember 中,可以传递动作函数,但我是反应新手,除了 $emit
之外,我不知道实现这一目标的最佳方法。
很难说不知道你到底想做什么,但你可以将变量绑定到新的范围,所以像
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 变量在指令模板内发生更改时,此更改都会进入外部范围。
此外,您可以使用类似的绑定(&rereplace =)将函数传递给指令。