指令和操作中的隔离范围



我正在使用角度 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 =)将函数传递给指令。

最新更新