Im AngularJs新手:)。 但我有3個組件:控制器C1(用於輸入搜索輸入並單擊提交按鈕),控制器C2(用於將接收來自SearchService的結果並顯示它的div)以及用於發送一些難編碼結果的服務searchService。AngularJS需要2次點擊才能執行搜索操作
想法是,提交搜索文本後,我必須提交兩次。只需點擊一次,ui-router的視圖就會更新爲部分頁面,而不會加載結果。第二次點擊後,結果顯示。
然後下一個搜索在搜索視圖頁上完成,一切正常,一鍵點擊需要的數據。
如何解決它:我想更改ui路由器視圖,並通過一次點擊從服務中獲得結果?
C1方法的代碼(submiting SEARCHTEXT之後開始)
$scope.searchText = function searchText(text) {
$log.log("Method searchText with text: " + text);
//var parametersObject = {searchText: text, results: assetResults}
$state.go('search');
$log.log("SearchInputBoxController: rootScope Broadcasting message: " + text);
$rootScope.$broadcast('DoSearch', text);
$log.log("SearchInputBoxController finished");
};
C2方法:對事件 'DoSearch'
$scope.$on('DoSearch', function (event, data) {
$scope.asset = searchService.search(data);
$scope.searchText = data;
});
searchService代碼事件處理程序:
Application.Services.factory('SearchService', ['SearchServiceResource', '$q',
function (SearchServiceResource, $q) {
return {
search : function (searchText)
{
var result = [
{id: 'aaaaa', sn:"1234-1234-1234-1235", name:"DCU_name1", type: "DCU", tags: ["tag1", "tag2"]},
{id: 'aaaaa', sn:"1234-1234-1234-1235", name:"DCU_name2", type: "DCU", tags: ["tag1", "tag2"]},
{id: 'aaaaa', sn:"1234-1234-1234-1235", name:"NODE_name1", type: "DCU_Node", tags: ["tag1", "tag2"]}
];
return result;
}
};
}]);
是的。你是對的。我無法將廣播發送到不活動的控制器。我通過設置和獲取方法將此更改爲服務。 – 2015-02-11 14:35:00