2016-03-07 33 views
1

我使用角1.4和我创建一个指令/组件,就像新的组件帮手:angularjs - 在指令孤立的范围和行动

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之外的最佳实现方法。

回答

2

硬盘使用指令

<invoice-search user-input=vm.userInput></invoice-search> 
时说,不知道你想要做什么,但你可以绑定变量到新的范围,所以像

var invoiceSearchComonent = ['invoiceDataService', function (invoiceDataService) { 
    return { 
    restrict: 'E', 
    scope: {userInput: '='}, 
    templateUrl: path.fromRoot("/application/invoices/views/invoicesearch.html"), 
    controller: InvoiceSearchController, 
    controllerAs: 'vm', 
    bindToController: true 
    }; 
}]; 

,然后

然后,只要userInput变量在您的指令模板内发生更改,此更改将使其到达外部范围。

另外,您可以使用类似的绑定类型将函数传递给指令(&替换=)