如何将日期选择器或任何常规jQuery插件添加到Ember-CLI应用程序
所以我想尝试将pikaday
日期选择器添加到Ember-CLI应用程序。
我的/app/views/calendar-view.js
有以下内容
import Ember from 'ember'; export default Ember.TextView.extend({ modelChangedValue: function(){ console.log(this.get('value')); }.observes("value"), didInsertElement: function(){ currentYear = (new Date()).getFullYear(); formElement = this.$()[0]; picker = new Pikaday({ field: formElement, yearRange: [1900,currentYear+2] }); this.set("_picker", picker); }, willDestroyElement: function(){ picker = this.get("_picker"); if (picker) { picker.destroy(); } this.set("_picker", null); } });
我的主要问题是如何将插件本身添加到ember-cli中?
这是pikaday的github链接: https : //github.com/dbushell/Pikaday
更具体地说,我认为这部分可能很重要,因为Ember-CLI使用AMD: https : //github.com/dbushell/Pikaday#amd-support
那么如何将插件本身添加到ember-cli?
更新
自从编写这个答案以来,Ember Addon API已经变得更加实用,如果你正在构建一个Ember组件/ mixin /其他类添加到常规js插件中,它是一个完美的选择。
定期安装
在“常规安装”情况下,您希望通过您的应用程序提供该插件,并将其包含在应用程序的有效负载中,无论如何。 为此,请将文件/包添加到项目的vendor
目录中。 有两种立即可用的方法:使用Bower或只是在目录中保存文件或包。
1)凉亭
使用Bower通过终端安装包,如:
bower install ember-validations
或者,如果您的bower.json文件中没有可用的简易安装Bower软件包:
{ "name": "app", "dependencies": { "chosen": "https://github.com/harvesthq/chosen/releases/download/v1.1.0/chosen_v1.1.0.zip" } }
2)写一个文件
您不必使用Bower将文件和目录添加到vendor
目录。 您可以在vendor
目录内的任何位置创建一个文件,将插件javascript复制并粘贴到其中并保存,它仍然可以导入到您的应用程序中。
3)在您的应用程序中提供它
无论您创建和保存插件脚本的方法如何,您仍然必须将文件直接导入到您的应用程序中。 您可以在Brocfile.js
执行此Brocfile.js
。 在module.exports = app.toTree();
之前添加带有文件路径的导入(主文件,如果它是bower安装的包) 。
app.import('vendor/ember-validations/index.js'); app.import('vendor/chosen/chosen.jquery.min.js');
在ember-cli文档的Managing Dependencies部分中有更多信息。
Polyfill或其他非必要的插件
在某些情况下,您不希望始终在应用中加载/运行脚本。 例如,仅在用户使用IE时才加载大型polyfill 。 在这种情况下,您可以在public/assets
创建一个目录来保存javascript文件,并使用jQuery的$.getScript()
方法在初始化程序或Ember应用程序中的其他位置加载它们。
我在这里回答了关于这种情况的类似问题。