加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – Angular ui-router onEnter函数未触发

发布时间:2020-12-17 18:01:56 所属栏目:安全 来源:网络整理
导读:感谢SO社区的一些帮助,我有一个工作角度SPA,它使用 ui-router库使用多个状态/视图.但是我得到的行为似乎与angular-ui-router文档不一致. 从他们关于onEnter的文档中,我希望无论何时我使用$state.go(“home”),与该状态的配置对象相关的onEnter()事件都会启动
感谢SO社区的一些帮助,我有一个工作角度SPA,它使用 ui-router库使用多个状态/视图.但是我得到的行为似乎与angular-ui-router文档不一致.

从他们关于onEnter的文档中,我希望无论何时我使用$state.go(“home”),与该状态的配置对象相关的onEnter()事件都会启动,但我不认为它会发生.例:

/* myApp module */
var myApp = angular.module('myApp',['ui.router'])
.config(['$stateProvider',function ($stateProvider) {

$stateProvider.state('home',{
    url: "/",views: {
        'top': {
            url: "",template: '<div>top! {{topmsg}}</div>',controller: function ($scope) {
                $scope.topmsg = "loaded top!";
                console.log("top ctrl!");
            },onEnter: function () {
                console.log("entered bottom state's onEnter function");
            }
        },'middle': {
            url: "",template: '<div>middle! {{middlemsg}}</div>',controller: function ($scope) {
                $scope.middlemsg = "loaded middle!";
                console.log("middle ctrl!");
            },'bottom': {
            url: "",template: '<div>bottom! {{bottommsg}}</div>',controller: function ($scope) {
                $scope.bottommsg = "loaded bottom!";
                console.log("bottom ctrl!");
            },onEnter: function () {
                console.log("entered bottom state's onEnter function");
            }
        }
    },onEnter: function () {
        console.log("entered home state");
    }
  });
}])
.controller('MyAppCtrl',function ($scope,$state/*,$stateParams*/) {
    $scope.statename = $state.current.name;
    $scope.testmsg = "app scope working!";
    console.log("MyAppCtrl initialized!");
    $state.go("home");
});

正如你可以从状态的配置对象中的所有onEnter()调用中看到的那样,我的期望是当家庭状态加载时,我会开始看到他们正在触发控制台消息的所有状态/视图的列表.但是,仅从主状态的onEnter事件中记录第一个输入的本地状态消息.没有一个其他视图的onEnter被击中.我误读了文档吗?

Here is a long-awaited fiddle进行演示.只需在firebug / chrome devtools中显示控制台,您就会看到缺少控制台输出.

任何帮助都会很棒.我正在使用角度1.2和ui-router 0.2.0.提前致谢!

解决方法

两件事情:

> onEnter方法适用于状态,而不适用于视图.您在定义中有一个州和三个视图,并且由于某种原因,您尝试将URL附加到您的视图.>为了输入一个州,首先必须退出. (A)你实际上从未离开过主状态(因为你只有一个状态定义开始),所以你永远不能重新输入它. (B)看起来你实际上是想在家里创造儿童状态.即使您修复了语法,它仍然无法工作,因为当您输入父项的子状态时,通过更改为同一父项中的其他子状态,您仍然永远不会实际离开父状态,因此不会重新触发onEnter.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读