我目前正在尝试与 AngularJS 取得联系。由于我计划构建一个相当复杂的 Web 应用程序,因此我在 ng 文档中搜索了 ngView/$routeProvider 组合的替代方案,因为我发现它们对于具有多个导航级别的复杂应用程序非常不满意。所以我尝试编写一个名为的自定义指令ngRoute
,可以像这样使用:
<div ng-route="users">
<div ng-route=":id"></div>
<div ng-route></div><!-- default -->
</div>
我目前拥有的是以下指令定义:
angular.module('app').directive('ngRoute', function($routeProvider) {
var getRoute = function($el) {
var parts = [];
var $curEl = $el;
while($curEl.length > 0) {
parts.unshift($curEl.attr('ng-route'));
$curEl = $curEl.parent().closest('*[ng-route]');
}
return parts.join('/');
}
var directiveDef = {
link: function(scope, $el, iAttrs, controller) {
var route = getRoute($el);
// Register route observer dependant on calculated route...
}
};
return directiveDef;
});
$routeProvider
不幸的是,由于注册路线观察所需的 DI,我得到了一个错误:
Error: Unknown provider: appProvider <- app <- ngRouteDirective
我在这里错过了什么吗?另外,请随意批评我的方法(也许有人已经为我的问题找到了更好的解决方案)。