【发布时间】:2016-05-17 19:37:23
【问题描述】:
我必须找到解决方案,但我找不到。
我的应用程序中有三种状态。搜索、搜索结果和搜索详情。
在我在搜索页面中提供一个用于搜索的交易密钥后,
结果显示在 UI Grid 中的搜索结果页面上,并且它们的事务状态为“等待批准”。
现在当我点击搜索结果页面上的交易密钥时..
我进入搜索详细信息页面。那是一个单独的控制器。
现在搜索详细信息页面上的批准按钮...
应将交易状态从“等待批准”更改为“已批准”。
这将通过后端的 StoredProcedure 完成。
所以我要做的就是
我还必须以某种方式更新搜索结果页面以反映状态已批准而不是等待批准。
但它们在 Angular 中是独立的控制器。
我怎样才能做到这一点?
更新
到目前为止,我所做的,但没有成功,是......
当点击批准按钮并返回结果时(即现在批准交易)
我再次通过 $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 的控制器上捕获相同的内容。
$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);
});
});
但这件事没有按预期工作?
有时会触发事件并且多次显示警报。
任何其他替代/更标准的实现相同的方法?
【问题讨论】:
标签: javascript angularjs angular-services angular-controller