范围:{},带有TypeScript中的参数

时间:2014-08-08 09:24:24

标签: angularjs typescript

我在互联网上找到了一个解决我问题的方法,但我有一个问题,我不知道如何覆盖这个:

  restrict: 'A',
  scope: {
    file: '=',
    fileName: '='
  },

进入TypeScript。

我试过这个:

            constructor($scope: ng.IScope) {
            var directive: ng.IDirective = {};
            directive.scope = {
                file: '=',
                fileName: '='
            }
        }

但它没有帮助,我仍然有一个错误:

  

属性'文件'在'ng.IScope'类型的值上不存在。

使用此示例:http://jsfiddle.net/lsiv568/fsfPe/10/

也许(或者可能是)我做错了什么,我必须以另一种方式修复此错误,但我希望您能引导我找到正确的解决方案

2 个答案:

答案 0 :(得分:6)

ng.IScope没有'file'\'filename'属性。只需extend界面即可。像这样:

interface IMyScope extends ng.IScope
{
  file: any;
  fileName: any;
}

constructor($scope: IMyScope) {
}

编辑以下是我使用范围创建指令的方法:

    class MyDirective implements ng.IDirective {
            public scope: IMyScope;
               // bla bla


            constructor() {
                this.scope = {
                   file: '=',
                   fileName: '='
                };
            }


            this.link = (scope: IMyScope, elem: JQuery, attrs) => {
                 // bla bla
            }
   }

答案 1 :(得分:-1)

make指令是怎样的

 module portal.directives{
    export class glowFont{
        constructor(){
            var directive:ng.IDirective={};
            directive.restrict='A';
            directive.link=(scope,element,attrs)=> {
               //do ur stuff here


             };
            directive.scope = {
                    foo1: "=?",
                    foo2: "=?"

                };
            return directive;
        }

    }
}

并在foo.directive(portal.directives)中注册指令名称空间,其中foo是您的角度模块。