不同视图之间的即时搜索 AngularJs
Instant search between different views AngularJs
我在一个 AngularJs 项目中使用 ui-router
我有两种看法:
.state('index', {
url: '/',
views: {
'@' : {
templateUrl: 'layout.html'
},
'top@index' : { templateUrl: 'partials/layout/top.html'},
'main@index' : { templateUrl: 'partials/layout/main.html'}
}
})
顶部和主要。
顶部视图是导航输入搜索,主视图是必须显示结果的地方,过滤 ng-repeat 或其他内容。
我需要在搜索框中进行搜索,而且我在顶部视图中输入的同时,结果必须显示在主视图中。
只有当我将搜索框放在 index.html 时才会出现这种情况,但当我将搜索框放在顶部视图时它就不起作用了。
使用 $rootScope.$broadcast
和 $scope.$on
的组合。基本上你可以将 $scope.$on 放在不同的视图中,并且所有订阅了 $rootScope 在 TopController
中执行的事件的范围都可以监听事件。
在顶部控制器中:
angular
.module('exampleApp')
.controller('TopController', TopController);
TopController.$inject = ['$rootScope'];
function TopController($rootScope){
var vm = this;
vm.search = function(textSearch) {
$rootScope.$broadcast('top:search', textSearch);
}
}
在主控制器中:
$scope.$on('top:search', function(event, searchInput){
console.log(searchInput);
});
我在一个 AngularJs 项目中使用 ui-router
我有两种看法:
.state('index', {
url: '/',
views: {
'@' : {
templateUrl: 'layout.html'
},
'top@index' : { templateUrl: 'partials/layout/top.html'},
'main@index' : { templateUrl: 'partials/layout/main.html'}
}
})
顶部和主要。
顶部视图是导航输入搜索,主视图是必须显示结果的地方,过滤 ng-repeat 或其他内容。
我需要在搜索框中进行搜索,而且我在顶部视图中输入的同时,结果必须显示在主视图中。
只有当我将搜索框放在 index.html 时才会出现这种情况,但当我将搜索框放在顶部视图时它就不起作用了。
使用 $rootScope.$broadcast
和 $scope.$on
的组合。基本上你可以将 $scope.$on 放在不同的视图中,并且所有订阅了 $rootScope 在 TopController
中执行的事件的范围都可以监听事件。
在顶部控制器中:
angular
.module('exampleApp')
.controller('TopController', TopController);
TopController.$inject = ['$rootScope'];
function TopController($rootScope){
var vm = this;
vm.search = function(textSearch) {
$rootScope.$broadcast('top:search', textSearch);
}
}
在主控制器中:
$scope.$on('top:search', function(event, searchInput){
console.log(searchInput);
});