Angularjs 使用$location.path在转换后访问模板中的元素
在属于某个路由的模板上,我想单击一个链接或按钮来调用作用域中的方法,然后从那里我将转换到一个新路由,并在模板上查找新路由的元素。基本上是这样的:Angularjs 使用$location.path在转换后访问模板中的元素,angularjs,Angularjs,在属于某个路由的模板上,我想单击一个链接或按钮来调用作用域中的方法,然后从那里我将转换到一个新路由,并在模板上查找新路由的元素。基本上是这样的: app.controller('SomeController', function SomeController($scope, $location) { $scope.goToOverview = function (showModal) { $location.path("overview/basic
app.controller('SomeController', function SomeController($scope, $location) {
$scope.goToOverview = function (showModal) {
$location.path("overview/basic");
if(showModal){
$('#basicModal').modal('toggle');
}
};
});
问题是,当我到达jQuery选择器时,“overview/basic”路由的模板尚未加载,因此找不到元素
如何解决这个问题
谢谢。As是从一个控制器广播事件并在另一个控制器中捕获事件的示例:
<div ng-app="MyApp">
<div ng-controller="OneCtrl">
<form>
<input type="text" ng-model="msg"></input>
<input type="submit" ng-click="send(msg)" value="Broadcast"></input>
</form>
</div>
<div ng-controller="TwoCtrl">
<p>Message from OneCtrl: {{ msg }}</p>
</div>
</div>
<script type="text/javascript">
var app = angular.module("MyApp", []);
app.controller('OneCtrl', function ($scope, $rootScope) {
$scope.send = function (msg) {
$rootScope.$broadcast('one_msg', {
msg: msg
});
};
});
app.controller('TwoCtrl', function ($scope) {
$scope.$on('one_msg', function (event, data) {
$scope.msg = data.msg;
});
});
</script>
来自OneCtrl的消息:{{msg}
var-app=angular.module(“MyApp”,[]);
app.controller('OneCtrl',函数($scope,$rootScope){
$scope.send=函数(msg){
$rootScope.$broadcast('one_msg'{
味精:味精
});
};
});
应用程序控制器('TwoCtrl',函数($scope){
$scope.$on('one_msg',函数(事件、数据){
$scope.msg=data.msg;
});
});
如何解决此问题?
可以为概述/basic
定义另一个控制器,并将showmodel
作为状态参数传递?尝试将$scope.$on('$stateChangeSuccessuccess',function(event,toState){}比你检查的还要多,比如说,你的名字是广播还是什么that@fardjad这就是我们试图避免的,不要在url上放置太多内容。@SergioRomero哦,我明白了,那么你可以广播一个事件或定义一个服务,并在两个控制器上使用它。Sergio,如果你在overview/basic模板上有另一个控制器,你也可以使用$rootcope在控制器之间执行通信。实际上,当我使用$emit而不是$broadcast时,控制器之间的通信工作正常,但它仍然没有解决最初的问题,即通过执行$('#basicModal')来显示模式窗口。modal('toggle'))。模板仍未加载,因此jQuery返回空结果。