如何将对象传递给 Angular (Angular 1.4.8) 的&
& 范围绑定指令?
我从文档中了解到,在回调函数中有一个需要命名参数的键解构,并且父作用域使用这些名称作为参数。这个 SO answer提供了一个有用的示例,说明了预期的&
功能。当显式命名父控制器函数调用的参数时,我可以让它工作。
但是,我正在使用&
通过工厂执行操作。父控制器对参数一无所知,只是将回调参数传递给 dataFactory,它需要基于操作的不同键/值。
一旦 promise 在工厂中解析,父作用域就会使用返回的数据进行更新。
因此,我需要一个具有n
多个键/值对的对象,而不是命名参数,因为它会根据每个配置的操作而有所不同。这可能吗?
我见过的最接近的是将 $parse 注入到链接函数中,这不能回答我的问题,但这是我正在寻找的一种解决方法。这个悬而未决的问题听起来完全符合我的需要。
另外,我试图避免编码/解码 JSON,broadcast
如果可能的话,我也想避免。为简洁起见,代码被精简。谢谢...
Relevant Child Directive Code
function featureAction(){
return {
scope: true,
bindToController: {
actionConfig: "=",
actionName: "=",
callAction: "&"
},
restrict: 'EA',
controllerAs: "vm",
link: updateButtonParams,
controller: FeatureActionController
};
}
Child handler on the DOM
/***** navItem is from an ng-repeat,
which is where the variable configuration params come from *****/
ng-click="vm.takeAction(navItem)"
Relevant Child Controller
function FeatureActionController(modalService){
var vm = this;
vm.takeAction = takeAction;
function _callAction(params){
var obj = params || {};
vm.callAction({params: obj}); // BROKEN HERE --> TRYING
//TO SEND OBJ PARAMS
}
function executeOnUserConfirmation(func, config){
return vm.userConfirmation().result.then(function(response){ func(response, config); }, logDismissal);
}
function generateTasks(resp, params){
params.example_param_1 = vm.add_example_param_to_decorate_here;
_callAction(params);
}
function takeAction(params){
var func = generateTasks;
executeOnUserConfirmation(func, params);
}
Relevent Parent Controller
function callAction(params){
// logs undefined -- works if I switch to naming params as strings
console.log("INCOMING PARAMS FROM CHILD CONTROLLER", params)
executeAction(params);
}
function executeAction(params){
dataService.executeAction(params).then(function(data){
updateRecordsDisplay(data); });
}