2014-03-31 40 views
1

all。Typescript 9.5+;将引导程序导入AMD模块以使用jquery扩展

我在AMD模式下使用require.js和TypeScript,并且无法将Bootstrap导入到我的脚本中。我有这样的导入语句;

import $ = require('jquery'); 
import ko = require('knockout'); 
import bootstrap = require('bootstrap'); 

它将它转换成这个JavaScript;

define(["require", "exports", 'jquery', 'knockout'], 
    function(require, exports, $, ko) { 
    ... 
}); 

请注意,Bootstrap不在所需模块列表中。这是因为TypeScript是'聪明'的,注意到我从来没有像这样引用Bootstrap导入;

// this never appears in my code 
bootstrap.blah() 

并删除'未使用'引导程序导入。在正常情况下,这是好的,但实际上引导jQuery的扩展,添加的东西像

// bootstrap adds jQuery plugins like modal; 
$(selector).modal() 

所以通过降低包括jQuery是不再与modal()等扩展,和我的代码失败。

我需要的是一种告诉TypeScript的方法,它确实需要在需要的模块列表中包含'bootstrap'模块。

任何想法?

回答

0

你可能需要的是一个require.config部分,并为boostrap指定一个垫片。
通过这种方式,jquery和boostrap都将它们的函数导出到任何$或jquery选择器。

类似:

require.config({ 
    baseUrl: '../', 
    paths: { 
     'jquery': 'lib/jquery-1.7.2', 
     'boostrap': 'lib/boostrap', 
    }, 
    shim: { 
     jquery: { 
      exports: '$' 
     }, 
     boostrap: { 
      exports: '$' 
     } 
    } 
}); 
2

你可以使用这个(不良记录)小动作,通过添加以下到您的文件的顶部:

/// <amd-dependecy path="bootstrap"> 

这将增加bootstrap AMD依赖关系列表。

+0

谢谢!我马上就去。 –

相关问题