gpt4 book ai didi

javascript - 在 Angular JS 中从另一个 Controller 触发一个 Controller 中的服务调用

转载 作者:行者123 更新时间:2023-11-28 06:00:45 26 4
gpt4 key购买 nike

我必须找到解决方案,但我找不到。

我的应用程序中有三个状态。搜索、搜索结果和搜索详细信息。

当我在搜索页面中提供搜索交易 key 后,

enter image description here

结果显示在 UI 网格中的搜索结果页面上,并且交易状态为“等待批准”。

enter image description here

现在,当我单击搜索结果页面上的交易 key 时..

我进入搜索详细信息页面。那是一个单独的 Controller 。

enter image description here

现在搜索详细信息页面上的批准按钮...

应将交易状态从“等待批准”更改为“已批准”。

这将通过后端的 StoredProcedure 完成。

所以我所要做的就是

我必须以某种方式更新搜索结果页面以反射(reflect)状态已批准而不是等待批准

但它们在 Angular 中是独立的 Controller 。

我怎样才能实现这个目标?

更新

到目前为止我所做的,但没有成功,是……

当点击批准按钮并返回结果时(即交易现已批准)

我再次通过 $rootScope.$broadcast 触发事务搜索

        var searchResultsParam = TransactionDataServices.getSavedSearchParams();

console.log("Search Results Params that are set ...");
console.log(searchResultsParam);

//Fire the transaction search again
$rootScope.$broadcast('gridRefreshMergeResult', searchResultsParam);

myApp.hidePleaseWait();

$("#accessDeniedModal").modal('show');

并在 SearchResult 的 Controller 上捕获相同的内容。

$rootScope.$on('gridRefreshMergeResult', function (event, arg) {
window.alert("Fired from merge");

console.log("In Event Args after broadcast from Merge");
console.log(arg);

//Fire the search again
TransactionServices.getTransactionAdvSearchResults(arg).then(function (result) {
console.log("Trans Search Results");
console.log(result);

//Set the Grid UI data again
$scope.searchResultsGridOptions.data = '';
$scope.searchResultsGridOptions.data = result;
TransactionDataServices.setSearchResultsData(result);
});
});

但这东西没有按预期工作?

有时会触发事件并且多次显示警报。

还有其他替代/更标准的方法可以实现相同的效果吗?

最佳答案

嗯,这是一种方法。单击“批准”并获得批准的记录后,您可以检索已批准的记录,然后发送包含更新数据的广播。广播由您的搜索 Controller 接收,然后使用其索引更新更新的记录。

//search results controller
$scope.editRecord = function(record){
$scope.editRecordIndex = $scope.searchResults.indexOf(record);

//Edit record state
$state.go("editRecord");
}

$scope.$on("RECORD_UPDATED",function(source,args){
$scope.searchResults[editRecordIndex] = args;
});




//record approval controller
$scope.approve = function(record) {
TransactionDataService.approve(record).then(function(response){
$rootScope.$broadcast("RECORD_UPDATED",response.record);
})
}

关于javascript - 在 Angular JS 中从另一个 Controller 触发一个 Controller 中的服务调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37284879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com