首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在jQuery服务中等待angular2 document.Ready()

在jQuery服务中等待angular2 document.Ready()
EN

Stack Overflow用户
提问于 2016-10-28 18:16:22
回答 1查看 571关注 0票数 1

我有一个angular2 (有角-cli)应用程序,它将存在于由CMS (DotnetNuke)提供的网站的网页中。这个web cms使用jquery的服务框架来生成对网站“后端”的api调用的验证令牌。因此,在获得此验证令牌之前,我无法生成对网站的任何web调用。

我创建了一个服务来处理对网站api的调用。在服务的构造函数中,我尝试以以下方式设置令牌( ServicesFramework对象有一个名为getAntiForgeryValue的函数,它返回令牌)

代码语言:javascript
复制
@Injectable()
export class ApiService {

    private http: Http;

    constructor(http: Http) 
    {
        console.log('dnn service constructor');

        $(document).ready(function () {
            this._dnnSF = $.ServicesFramework(804);
        });
    }

    getRequestVerificationToken(): any {
        return this._dnnSF.getAntiForgeryValue();        
    };
}

getAntiForgeryValue() of ServicesFramework只返回对.net web端点的ajax调用的jQuery jQuery。这只是为了解释。

问题:

注入此服务的其他组件在服务的构造函数中完成getAntiForgeryValue()之前调用document.ready,因此我得到:

无法读取未定义的属性“getAntiForgeryValue”

问题:可以帮助我用angular2制定一个策略,在这个策略中,我可以等待这个验证令牌在运行角应用程序之前提供,或者如何在服务中等待构造函数的完成。

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2016-10-29 01:27:43

该错误意味着:未定义$.ServicesFramework。你需要找到一种方法把它注入角质世界。一种方法(不推荐但快速)是在角外的全局范围内声明它:window.framework = $.ServicesFramework;

然后在服务的顶部声明它:const framework;

然后在构造函数中可以这样做:constructor(http: Http) { this._dnnSF = framework; }

清单上我说这既快又脏。更好的方法是在引导角度应用程序时注入外部组件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40310965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档