我正在使用角度引导标签在一个页面中显示某些部分。为了不立即加载所有内容,我创建了一个指令,允许在单击时加载选项卡,它还支持为每个选项卡使用单独的控制器。
这样,我有一个控制器,其中有标签,而且每个标签我都有一个控制器。
.directive('template', ['$templateCache', '$compile', '$http', function ($cache, $compile, $http) {
return {
restrict: 'A',
replace: false,
link: function ($scope, element, attrs) {
var template = attrs['template'];
var controller = attrs['controller'];
if (template !== undefined) {
var tpl = $cache.get(template);
if (tpl) {
compile(tpl);
} else {
$http.get(template).success(function (html) {
$cache.put(template, html);
compile(html);
});
}
}
function compile(html) {
var e = angular.element(controller === undefined || controller.length === 0 ? html : "<div ng-controller='" + controller + "'>" + html + "</div>");
var compiled = $compile(e);
element.replaceWith(e);
compiled($scope);
}
}
};
}])
现在我可以像这样使用它:
//controller
$scope.data = something;
$scope.tabs = [
{
template: 'html-template-url',
controller: 'controller-name',
resolve: { //how o implement this?
data: function () {
return $scope.data;
}
}
},
//view
Some data: {{data}}
...
<uib-tab ng-repeat="tab in tabs" select="select(tab)">
<div ng-if="tab.loaded" template="{{tab.template}}" controller="{{tab.controller}}"></div>
</uib-tab>
...
问题是我需要将一些信息从主视图传递到选项卡中的局部视图,因为它们是分开的控制器我可以让它知道如何获得它。我想某种解决属性,但我一直在尝试没有成功。
有人可以给我一些建议吗?