我有这段代码......
spa.factory("linkFactory", function() {
var linkFactoryObject = {};
linkFactoryObject.currentLink = "home";
return linkFactoryObject;
});
此代码段充当全局变量,我在不同的控制器之间设置和读取。此变量控制哪个链接标记为活动。
我的代码效果很好。唯一的问题是,如果我在您第一次进入我的网页时未在工厂设置初始值,则home
链接将不会设置为活动状态。如果我设置了初始值,那么当有人刷新页面时,该值将重置为初始值。这意味着主页链接将处于活动状态,但您实际上将位于不同的页面上。
此外,我已尝试使用$location.path()
来获取我的路径并从该值构建一个函数,但$location.path()
是静态的,所以这也不会起作用。
我有这个路径片段来控制我加载的内容......
spa.config(function($routeProvider, $locationProvider) {
$routeProvider
.when('/home', {
templateUrl: '/partials/home.html'
})
.when('/about', {
templateUrl: '/partials/about.html'
})
.when('/skills', {
templateUrl: '/partials/skills.html'
})
.when('/experience', {
templateUrl: '/partials/experience.html'
})
.when('/resume', {
templateUrl: '/partials/resume.html'
})
.when('/contact', {
templateUrl: '/partials/contact.html'
})
.otherwise({
redirectTo: '/home'
});
});
如果我能以某种方式设置一个变量,我可以在我的控制器中读取,我会很高兴,但我不确定如何做到这一点。
我将如何做到这一点?
答案 0 :(得分:0)
试试这个。它应该在状态改变时设置路由的URL
int count =0;
public void printAllPathWithSum(Node node, int sum, ArrayList<Integer> list)
{
if(node == null)
return;
if(node.data<=sum)
{
list.add(node.data);
if(node.data == sum)
print(list);
else
{
count ++;
printAllPathWithSum(node.left, sum-node.data, list);
printAllPathWithSum(node.right, sum-node.data, list);
count --;
}
}
if(count != 0)
return ;
printAllPathWithSum(node.left, this.sum, new ArrayList());
if(count != 0)
return;
printAllPathWithSum(node.right, this.sum, new ArrayList());
}
public void print(List list)
{
System.out.println("Next path");
for(int i=0; i<list.size(); i++)
System.out.print(Integer.toString((Integer)list.get(i)) + " ");
System.out.println();
}
答案 1 :(得分:0)
而不是注册$ routeChangeStart事件。如果不需要为每个页面定义单独的控制器,也可以定义默认控制器。在控制器中,您可以将值设置为当前链接。
我建议你只为此目的定义一个范围变量,并检查范围变量,以便为链接设置适当的类。
这方面有一个很好的主题。