我正在重构我的所有代码以实现本文form_valid()
中所述的顶级指令,而且我不确定如何访问我已解析的值:
$stateProvider
.state('login', {
url : '/login',
template : '<sr-login-view></sr-login-view>'
})
.state('main', {
url : '/main',
template : '<sr-main-view></sr-main-view>',
resolve : {
directiveConfig : function (Directives) {
return Directives.getConfig('mainScreen');
}
}
});
指令:
angular.module('ElectronClient')
.directive('srMainView', function (directiveConfig //doesn't work) {
return {
restrict : 'E',
require : 'srMainScreen',
scope : {},
templateUrl : 'source/app/directives/main/main_view.html',
controller : function ($scope, directiveConfig //doesn't work) {
//code
},
link : {
post : function (scope, element, attributes, mainViewController) {
}
}
}
});
这有什么解决方法吗?拥有“顶级”指令的重点是不在状态中定义Controller,但似乎resolve参数仅传递给附加到该状态的控制器
答案 0 :(得分:1)
拥有“顶级”指令的重点是不在状态中定义Controller
是的,这就是重点,但为什么呢?这样你就可以利用这个:
当我需要一个可重用的子组件用于我的页面时,与路由无关,我总是使用不同的模式,我的应用程序变得更难以推理。
现在使用resolve
会破坏这个目的,因为根据你如何调用你的指令,有些人会有directiveConfig
可用于注射而有些则不会。这意味着将使用不同的模式,具体取决于指令的使用方式。
为了与文章建议的内容保持一致,我想最好远离解决路线中的值并在控制器中解析它们。