gpt4 book ai didi

javascript - 如何为路线动态设置 Controller ?

转载 作者:行者123 更新时间:2023-11-27 23:49:02 25 4
gpt4 key购买 nike

让我给出一个示例代码来更好地解释。下面是代码:

$routeProvider
.when("/b/:param",{
templateUrl:"main.html"
controller:"MainCtrl"
})
.when("/c/:param",{
templateUrl:"main.html"
});

现在从上面的代码中您可以看到,对于一条路线,我已经指定了要分配给 View 的 Controller ,而对于另一条路线,我没有添加 Controller 属性,因此对于该路线,不会有任何 Controller 属性页面上分配的 Controller 。

Now my question :

When I don't specify the controller property in the route is there any other way that I can assign the controller for that route dynamically?

我尝试过的

  • 我浏览了一些与此相关的 SO 页面,其中之一是 -> dynamically loading the controller in angularjs $routeProvider

    现在我已经尝试了上面帖子中的一些解决方案,但这些解决方案对我不起作用。如果其中任何解决方案有效,请向我提供有关如何实现它们的更多信息。

    像在页面内设置 Controller 或使用 ui-router 这样的解决方案不是我正在寻找的解决方案类型。所以请不要给出这样的答案。

  • 我尝试使用 $controllerProvider & $controller 、 $routeProvider & $route 提供的一些功能来设置 Controller ,但没有成功。我仍然不确定使用它们是否可以完成任务请回答如何使用它们。

如果问题仍然不清楚,请在此问题下添加评论。谢谢。

最佳答案

Apparently ,它是 ngView 指令(其中之一),负责为相关 Controller 提供路由。它看起来是打补丁的好地方。 ngView 指令计数随时间从 1 到 2 变化,目标是最后一个。

app.decorator('ngViewDirective', function ($delegate, $route, $injector) {
var ngViewHelper = $delegate[$delegate.length - 1];

var compile_ = ngViewHelper.compile || function () {};
var link_ = ngViewHelper.link;

var link = function () {
var current = $route.current;

if (current.controllerProvider) {
current.controller = $injector.invoke(current.controllerProvider);
}

link_.apply(null, arguments);
}
ngViewHelper.compile = function () {
compile_.apply(ngViewHelper, arguments);
return link;
};

return $delegate;
});

它为路由提供controllerProvider参数,类似于the one from ui-router (对此感到抱歉)。

controllerProvider 基本上是一个利用依赖注入(inject)的函数($route$routeParams 在那里肯定受到欢迎)并返回一个 Controller 作为字符串、构造函数或根本没有 Controller (未定义)。

  ...
.when("/:id", {
controllerProvider: function ($routeParams) {
var controller;
if ($routeParams.id == 'foo')
controller = 'FooController';
else if ($routeParams.id == 'bar')
controller = function ($scope) { ... };
return controller;
}
});

关于javascript - 如何为路线动态设置 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32876764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com