angularjs - 指令和动作中的孤立范围

时间:2016-03-07 20:29:13

标签: angularjs

我正在使用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之外,我不知道实现这一目标的最佳方法。

1 个答案:

答案 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 =)