在指令中创建resolve选项

时间:2016-01-21 18:26:15

标签: javascript angularjs twitter-bootstrap angular-ui-bootstrap

我正在使用角度引导标签在一个页面中显示某些部分。为了不立即加载所有内容,我创建了一个指令,允许在单击时加载选项卡,它还支持为每个选项卡使用单独的控制器。

这样,我有一个控制器,其中有标签,而且每个标签我都有一个控制器。

.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>
...

问题是我需要将一些信息从主视图传递到选项卡中的局部视图,因为它们是分开的控制器我可以让它知道如何获得它。我想某种解决属性,但我一直在尝试没有成功。

有人可以给我一些建议吗?

0 个答案:

没有答案