2

我想使用$rootScope, 和$rootangular2 中的值。我也很困惑如何在 angular2 中转换 angularjs 指令,如下所示。

.directive('thisDirective', function () {
    return {
        restrict: 'A',
        link: function (scope, element, attrs) {
            element.on('click', function(evt){
                var getMethods = {
                    get_link:function(){
                        var observer = {
                            override:true,
                            triggerIndex:0,
                            onLink:function(link){
                                scope.$root.getThisVal = false;
                                (scope.$$phase || scope.$digest());}
                        };
                        scope.$root.bitlyUrl = "";
                        scope.$root.modelFlags.share_window = scope.$root.modelFlags.steps_upload = scope.$root.getThisVal = true;                          $('.addthisbtn[datatitle=Email]').trigger('click',observer )
                    },
                    addthis_button:function(){
                        var observer = {
                            override:true,
                            triggerIndex:0
                        };
                        $('.addthis-btn[data-title=Email]').trigger('click',observer )
                    }
                };
                getMethods[attrs['thisDirective']]();
            });
        }
    };
})
4

2 回答 2

1

其实Angular 2中已经没有作用域的概念了,现在有两个概念:

  • 指令:“它最简单的指令是装饰器。指令对于封装行为很有用。”
  • 组件:“组件是一个指令,它使用影子 DOM 来创建封装视觉行为。组件通常用于创建 UI 小部件或将应用程序分解为更小的组件。”

大多数时候,要实现 Angular1 指令,您需要创建一个组件并在关联的模板中使用它的状态。

你可以看看 angular.io 的官方“5min quickstart”:https ://angular.io/guide/quickstart 。有很多关于创建组件的提示。

此链接还可以为您提供更多元素:https ://github.com/angular/angular/blob/master/modules/angular2/docs/core/02_directives.md

如果您告诉我们,您的用例是什么,也许我可以给您更准确的答案...

希望它可以帮助你,蒂埃里

于 2015-12-22T15:39:26.320 回答
0

@thierry 解释得很好,但我想补充几点......

---众所周知,angular2 中没有 $scope 和 $rootscope 功能,但如果我们想使用一些服务,我们可以在引导时提供该变量/服务的应用程序。通过使用这种方式,该服务在应用程序中的任何地方都可用,而无需像这样导入。

bootstrap(App,[ROUTER_PROVIDERS, HTTP_PROVIDERS, GlobalService, provide(LocationStrategy,{useClass:HashLocationStrategy})]);

这里像 ROUTER_PROVIDERS 或我们通过引导程序提供的 Globalservice,我们可以在任何地方使用它。

---如果我谈论指令,这里解释的 angular2 中有三种类型的指令。并在此处找到详细信息https://angular.io/docs/ts/latest/guide/attribute-directives.html

于 2016-01-09T19:37:41.563 回答