> … /步/ 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的帮助!
解决方法
因为当你调用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); }); }]);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。