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返回空结果。