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

angularjs – WizardHandler.wizard().goTo

发布时间:2020-12-17 07:00:37 所属栏目:安全 来源:网络整理
导读:我使用 https://github.com/mgonto/angular-wizard创建一个角度向导,其步骤可以从路径参数调用: … /步/ 1 … / step / 2 等等 所以我创建了这个控制器: .controller('createOrganizer',['$scope','WizardHandler','$routeParams',function($scope,WizardH
我使用 https://github.com/mgonto/angular-wizard创建一个角度向导,其步骤可以从路径参数调用:

> … /步/ 1
> … / step / 2

等等

所以我创建了这个控制器:

.controller('createOrganizer',['$scope','WizardHandler','$routeParams',function($scope,WizardHandler,$routeParams)
    {
        //$scope.data = {};
        $step = $routeParams.step;
        WizardHandler.wizard().goTo($step);     
    }])

在app.js和index.html上正确创建了正确的链接和路由

但是当我进入网址时,我得到了这个:

TypeError: Cannot call method 'goTo' of undefined

这是使用url参数预先选择角度向导步骤的方法吗?

=================更新=====================

我尝试过这样的事情:

.controller(‘createOrganizer’,[‘$scope’,’WizardHandler’,’$routeParams’,
????功能($范围,$routeParams)
????{
????????$step = $routeParams.step;

$scope.$watch(WizardHandler.wizard(),function(step) {
            WizardHandler.wizard().goTo($step);
    });
}])

我的想法是告诉我何时实例化WizardHandler.wizard()以调用.goTo方法.使用此控制器我得到此错误:

TypeError:无法设置未定义的属性“selected”

不确定我是否正确使用手表.我甚至测试了step变量,它没问题,显示与url相同的值.

=================解决了! =====================

var step = parseInt($routeParams.step); // Important,as routeParams returns an String: the wizardHandler uses either an integer number or a string name of step. So I am parsing the number to prevent confusion.
    $scope.$watch(
    function() {return WizardHandler.wizard();},function (wizard) {
    if (wizard) wizard.goTo(step);
    });

我添加了一个init(step)函数来处理我需要的一些值的初始值,并且还可以防止由url引起的错误,如… / step / SOMERANDOMSTRING

感谢GregL的帮助!

解决方法

通过快速阅读源代码,我的第一个猜测就是你使用了< wizard>指定了name属性的元素,但是您没有将相同的名称传递给WizardHandler.wizard().在代码中,如果没有为WizardHandler.wizard()指定名称参数,它将使用默认名称,即< wizard>使用的名称.没有名称属性.

因为当你调用WizardHandler.wizard()时你没有回到你想要的向导,它会解析为未定义,并且调用goTo()将失败并显示你得到的错误.

至少,将向导和.goTo()调用分开以添加一个签入以确保您有一个有效的向导:

.controller('createOrganizer',$routeParams)
    {
        //$scope.data = {};
        $step = $routeParams.step;
        var wizard = WizardHandler.wizard();
        if (wizard)
            wizard.goTo($step);
    }]);

在$step赋值之前可能应该有一个var关键字,并且作为约定,只有Angular核心事物应该以$或jQuery选择变量开头.

编辑:你也可以尝试使用$watch()来加载向导时得到通知,但是不能保证在加载向导后立即调用$digest()循环,所以你将依赖于假设$wizard / $digest循环在向导正确添加到WizardHandler缓存后的某个时间运行.

你会这样做:

.controller('createOrganizer',$routeParams)
    {
        //$scope.data = {};
        $step = $routeParams.step;
        $scope.$watch(function() {
            return WizardHandler.wizard();
        },function (wizard) {
            if (wizard)
                wizard.goTo($step);
        });
    }]);

(编辑:李大同)

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

    推荐文章
      热点阅读