- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我似乎无法使用 DataTables 的 javascript 库(或任何与此相关的外部 Bootstrap javascript。导入 Angular 工作正常)。
这就是我的 app.js
文件中的内容。
import 'bootstrap/dist/css/bootstrap.min.css';
import 'bootstrap/dist/js/bootstrap.min.js';
import 'datatables.net/js/jquery.dataTables';
import 'datatables.net-bs/css/dataTables.bootstrap.css';
import 'datatables.net-bs/js/dataTables.bootstrap';
import './assets/css/styles.css';
import angular from 'angular';
import uirouter from 'angular-ui-router';
import routing from './app.config';
import dashboard from './dashboard';
angular.module('app', [uirouter, dashboard])
.config(routing);
和我的webpack.config.js
文件:
var webpack = require('webpack');
var path = require('path');
var OpenBrowserPlugin = require('open-browser-webpack-plugin');
module.exports = {
entry: [
'webpack/hot/dev-server',
path.resolve(__dirname, 'app/app.js')
],
output: {
path: __dirname + '/build',
publicPath: '/',
filename: './bundle.js'
},
module: {
loaders:[
{ test: /\.html$/, exclude: /node_modules/, loader: 'html' },
{ test: /\.css$/, loader: 'style-loader!css-loader' },
{ test: /\.js?$/, include: path.resolve(__dirname, 'app'), exclude: /node_modules/, loader: 'babel-loader' },
{ test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: "file" },
{ test: /\.(woff|woff2)$/, loader:"url?prefix=font/&limit=5000" },
{ test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&mimetype=application/octet-stream" },
{ test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&mimetype=image/svg+xml" }
]
},
resolve: {
root: path.join(__dirname, 'app'),
extensions: ['', '.js', '.css'],
modulesDirectories: ['app', 'node_modules']
},
plugins: [
new OpenBrowserPlugin({ url: 'http://localhost:8080' }),
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery"
})
]
};
我没有收到任何关于无法找到我尝试导入的 javascript 文件(bootstrap.min.js、dataTables.bootstrap.js 等)的错误,但它似乎没有使用它们.
在我应该使用数据表的 html 文件中,看起来它只是从 css 中提取,并且没有从 javascript 文件应用任何内容。
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">
DataTables Advanced Tables
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="dataTables_wrapper">
<table class="table table-striped table-bordered table-hover" id="dataTables-example">
<thead>
<tr>
<th>Rendering engine</th>
<th>Browser</th>
<th>Platform(s)</th>
<th>Engine version</th>
<th>CSS grade</th>
</tr>
</thead>
<tbody>
<tr class="odd gradeX">
<td>Trident</td>
<td>Internet Explorer 4.0</td>
<td>Win 95+</td>
<td class="center">4</td>
<td class="center">X</td>
</tr>
<tr class="even gradeC">
<td>Trident</td>
<td>Internet Explorer 5.0</td>
<td>Win 95+</td>
<td class="center">5</td>
<td class="center">C</td>
</tr>
<tr class="odd gradeA">
<td>Trident</td>
<td>Internet Explorer 5.5</td>
<td>Win 95+</td>
<td class="center">5.5</td>
<td class="center">A</td>
</tr>
<tr class="even gradeA">
<td>Trident</td>
<td>Internet Explorer 6</td>
<td>Win 98+</td>
<td class="center">6</td>
<td class="center">A</td>
</tr>
<tr class="odd gradeA">
<td>Trident</td>
<td>Internet Explorer 7</td>
<td>Win XP SP2+</td>
<td class="center">7</td>
<td class="center">A</td>
</tr>
<tr class="even gradeA">
<td>Trident</td>
<td>AOL browser (AOL desktop)</td>
<td>Win XP</td>
<td class="center">6</td>
<td class="center">A</td>
</tr>
<tr class="gradeA">
<td>Gecko</td>
<td>Firefox 1.0</td>
<td>Win 98+ / OSX.2+</td>
<td class="center">1.7</td>
<td class="center">A</td>
</tr>
<tr class="gradeA">
<td>Gecko</td>
<td>Firefox 1.5</td>
<td>Win 98+ / OSX.2+</td>
<td class="center">1.8</td>
<td class="center">A</td>
</tr>
<tr class="gradeA">
<td>Gecko</td>
<td>Firefox 2.0</td>
<td>Win 98+ / OSX.2+</td>
<td class="center">1.8</td>
<td class="center">A</td>
</tr>
<tr class="gradeA">
<td>Gecko</td>
<td>Firefox 3.0</td>
<td>Win 2k+ / OSX.3+</td>
<td class="center">1.9</td>
<td class="center">A</td>
</tr>
<tr class="gradeA">
<td>Gecko</td>
<td>Camino 1.0</td>
<td>OSX.2+</td>
<td class="center">1.8</td>
<td class="center">A</td>
</tr>
<tr class="gradeA">
<td>Gecko</td>
<td>Camino 1.5</td>
<td>OSX.3+</td>
<td class="center">1.8</td>
<td class="center">A</td>
</tr>
</tbody>
</table>
</div>
<!-- /.table-responsive -->
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
</div>
我在这里遗漏了什么吗?很难在网上找到解决方案,因为似乎没有多少人将 Angular 与 ES6 和 Webpack 一起使用。
最佳答案
这让我发疯,所以希望这能有所帮助......基本上,我最终尽可能通过 NPM 导入所有内容,然后手动导入。请参阅此站点,了解有关所需模块的一些规范:
http://datatables.net/download/npm
经过研究后,Webpack/ES6/bundling 风格确实与 React(或者可能是 Angular 2)等代码的工作方式不符。
首先,此代码基于 NG6-Angular/Webpack/ES6 启动器。这是 app.js 文件...稍作修改:
import angular from 'angular';
import 'angular-flot';
import 'angular-datatables';
import 'angular-breadcrumb';
import 'angular-sweetalert';
import 'datatables.net-bs';
import 'flot';
import ngAnimate from 'angular-animate';
import ngCookies from 'angular-cookies';
import ngFileUpload from 'ng-file-upload';
import ngResource from 'angular-resource';
import ngSanitize from 'angular-sanitize';
import ngTouch from 'angular-touch';
import 'restangular';
import satellizer from 'satellizer';
import toastr from 'angular-toastr';
import uiBootstrap from 'angular-bootstrap-npm';
import uiRouter from 'angular-ui-router';
import 'angular-ui-router-title';
import 'api-check';
import './externals';
import Common from './common/common';
import Components from './components/components';
import component from './app.component';
import AppRun from './app.run';
import AppConfig from './app.config';
const nameNormalized = 'app';
angular
.module(nameNormalized, [
'angular-flot',
'datatables',
'datatables.bootstrap',
'datatables.buttons',
'formly',
'formlyBootstrap',
'ncy-angular-breadcrumb',
ngAnimate,
ngCookies,
ngFileUpload,
ngResource,
ngSanitize,
ngTouch,
'oitozero.ngSweetAlert',
'restangular',
satellizer,
toastr,
uiBootstrap,
'ui.footable',
uiRouter,
'ui.router.title',
Common.name,
Components.name
])
.config(AppConfig)
.directive(nameNormalized, component())
.run(AppRun)
;
这是上面导入的 externals
文件:
import 'script!../node_modules/api-check/dist/api-check.min.js';
import 'script!../node_modules/angular-formly/dist/formly.min.js';
import 'script!../node_modules/angular-formly-templates-bootstrap/dist/angular-formly-templates-bootstrap.min.js';
import 'imports?jQuery=jquery!../node_modules/metismenu/dist/metisMenu.min.js';
import 'imports?$=jquery!../bower_components/angular-footable/src/angular-footable.js';
import 'imports?$=jquery!../bower_components/angular-footable/src/angular-footable.js';
import 'imports?$=jquery!../bower_components/flot.tooltip/js/jquery.flot.tooltip.min.js';
import 'imports?$=jquery!../bower_components/jquery.flot.time.js/index.js';
import 'imports?$=jquery!./externals/jquery.ba-resize.js';
import 'imports?jQuery=jquery!./externals/jquery.flot.resize.js';
import 'imports?$=jquery!./externals/inspinia.js';
这是 Webpack 配置...它没有被精简,但也许这是首选:
import autoprefixer from 'autoprefixer';
import ExtractTextPlugin from 'extract-text-webpack-plugin';
import HtmlWebpackPlugin from 'html-webpack-plugin';
import CopyWebpackPlugin from 'copy-webpack-plugin';
import path from 'path';
import webpack from 'webpack';
import _ from 'lodash';
let plugins = [
new webpack.NoErrorsPlugin(),
new webpack.optimize.DedupePlugin(),
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.ProvidePlugin({
_: 'lodash',
$: 'jquery',
jQuery: 'jquery',
'window.jQuery': 'jquery',
'window.$': 'jquery'
}),
new CopyWebpackPlugin([
{from: './assets/img/favicons', to: 'assets/img/favicons'}
])
];
let cssMinimize = '';
let htmlMinify = {};
let extractStyles = false;
if(process.env.NODE_ENV === 'production') {
/*
Production uglify disabled for now:
https://github.com/webpack/webpack/issues/1079
https://github.com/webpack/webpack/pull/560#issuecomment-66818521
Possible workaround for future:
https://www.npmjs.com/package/uglify-loader
plugins.push(new webpack.optimize.UglifyJsPlugin({
compress: {warnings: true},
sourceMap: false,
mangle: false,
exclude: [/bower_components/, /node_modules/]
}));
*/
htmlMinify = {
removeComments: true,
collapseWhitespace: true,
conservativeCollapse: true,
preserveLineBreaks: false,
keepClosingSlash: true
};
cssMinimize = 'minimize';
}
module.exports = o => ({
context: path.join(__dirname, '/src'),
entry: {app: getEntry(o)},
eslint: {configFile: './.eslintrc'},
module: {
loaders: [
{
test: /.(png|woff(2)?|eot|ttf|svg)(\?[a-z0-9=\.]+)?$/,
loader: 'url?limit=1000000'
},
{
test: /\.(png|jpg|jpeg|gif|svg|woff|woff2|ttf|eot|xml|ico)$/,
loader: 'file?name=[path][name].[ext]'
},
{test: /\.json$/, loader: 'json'},
{
test: /\.js$/,
loader: 'ng-annotate!babel?presets[]=es2015,presets[]=stage-0',
exclude: [/bower_components/, /node_modules/]
},
{
test: /\.js$/,
loader: 'eslint',
exclude: [/bower_components/, /node_modules/]
},
{
test: /\.styl$/,
loader: getStyleLoader(_.merge({extra: '!stylus'}, o))
},
{
test: /\.less$/,
loader: getStyleLoader(_.merge({extra: '!less'}, o))
},
{
test: /\.css$/,
loader: getStyleLoader(_.merge({extra: ''}, o))
},
{
test: /\.html$/,
loader: 'ngtemplate?relativeTo=' +
(path.resolve(__dirname, '/src')) + '/!html'
}
]
},
output: {
path: path.join(__dirname, '/dist'),
publicPath: '/',
filename: '[name].js'
},
plugins: getPlugins(o),
postcss: [autoprefixer({browsers: ['last 2 versions']})]
});
function getStyleLoader(o) {
const ending = 'css?' + cssMinimize + '!postcss' + o.extra;
if(o.watch) {
return 'style!' + ending;
} else {
return ExtractTextPlugin.extract('style', ending);
}
}
function getPlugins(o) {
if(!o.watch) {
plugins.push(new ExtractTextPlugin('[name].css'));
} else {
plugins.push(new webpack.HotModuleReplacementPlugin());
}
plugins.push(new HtmlWebpackPlugin({
filename: 'index.html',
hash: true,
minify: htmlMinify,
template: './src/index.html',
title: 'oa',
watch: o.watch
}));
return plugins;
}
function getEntry(o) {
let entry = ['./app'];
if(o.watch) {
entry.push('webpack/hot/dev-server');
}
return entry;
}
最后,package.json 依赖项
"dependencies": {
"angular": "~1.4.7",
"angular-animate": "~1.4.7",
"angular-bootstrap-npm": "^0.14.3",
"angular-breadcrumb": "^0.4.1",
"angular-cookies": "^1.4.8",
"angular-datatables": "^0.5.2",
"angular-flot": "0.0.15",
"angular-formly": "^7.3.5",
"angular-formly-templates-bootstrap": "^6.1.7",
"angular-resource": "~1.4.7",
"angular-route": "~1.4.7",
"angular-sanitize": "^1.4.8",
"angular-sweetalert": "^1.1.0",
"angular-toastr": "^1.6.0",
"angular-touch": "^1.4.8",
"angular-ui-router": "~0.2.15",
"angular-ui-router-title": "0.0.4",
"angular-ui-sortable": "~0.13.4",
"api-check": "^7.5.5",
"autoprefixer": "^6.1.0",
"babel-core": "^6.1.21",
"babel-eslint": "^4.1.5",
"babel-loader": "^6.2.0",
"babel-preset-es2015": "^6.1.18",
"babel-preset-stage-0": "^6.1.18",
"bootstrap": "^3.3.6",
"bower": "^1.7.1",
"copy-webpack-plugin": "^0.3.3",
"css-loader": "^0.22.0",
"datatables.net": "^1.10.10",
"datatables.net-bs": "^1.10.10",
"datatables.net-buttons": "^1.1.0",
"datatables.net-buttons-bs": "^1.1.0",
"drmonty-datatables-responsive": "^1.0.6",
"eslint": "^1.9.0",
"eslint-loader": "^1.1.1",
"extract-text-webpack-plugin": "^0.9.1",
"file-loader": "^0.8.5",
"flot": "^0.8.0-alpha",
"gulp": "^3.9.0",
"gulp-rename": "^1.2.2",
"gulp-template": "^3.1.0",
"gulp-util": "^3.0.7",
"html-loader": "^0.4.0",
"html-webpack-plugin": "^1.7.0",
"imports-loader": "^0.6.5",
"jquery": "^2.1.4",
"json-loader": "^0.5.4",
"less": "^2.5.3",
"less-loader": "^2.2.2",
"loader-utils": "^0.2.12",
"lodash": "^3.10.1",
"metismenu": "^2.2.0",
"ng-annotate-loader": "0.0.10",
"ng-file-upload": "^10.1.5",
"ngtemplate-loader": "^1.3.1",
"path": "^0.12.7",
"postcss-loader": "^0.8.0",
"raw-loader": "^0.5.1",
"restangular": "^1.5.1",
"satellizer": "^0.13.1",
"script-loader": "^0.6.1",
"source-map": "^0.5.3",
"style-loader": "^0.13.0",
"stylus-loader": "^1.4.2",
"url-loader": "^0.5.7",
"webpack": "^1.12.6",
"webpack-dev-server": "^1.12.1",
"yargs": "^3.30.0"
}
关于angularjs - 使用 Angular + Webpack + es6 的数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34141365/
我有一个带有嵌套数据的 angular 数据表,我正在尝试在行点击函数上创建另一个数据表。父数据表的 rowCallBack 函数。 这是我的外部数据表 html; 这是我生成数据表的方
我有一个字母数字列,其中包含诸如“1、2、2”之类的字符串。 当我在搜索中输入“1, 2, 2”时,它似乎返回带有“1,”和“2,”的所有单元格。 我该怎么做才能使搜索仅返回“1、2、2”? 使用数据
我有一个获取其数据服务器端的表,使用自定义服务器端初始化参数,这些参数因生成的报告而异。表格生成后,用户可以打开一个弹出窗口,他们可以在其中添加多个附加过滤器以进行搜索。我需要能够使用与原始表相同的初
在 datatables我希望能够隐藏所有列,但似乎无法正确使用语法。 这来自下面的代码和上面的链接,创建了一个显示所有列的按钮。有没有办法写这个以便我可以隐藏所有列? {
我正在使用 DataTable 创建一个交互式表。我有 9 列,其中 5 列是值。我想根据它们的具体情况更改每个单元格的背景颜色。 我已经开始尝试首先更改整行颜色,因为这似乎是一项更容易的任务。但是我
我有一个简单的例子来说明我的问题。我正在使用数据表 1.9。当数据表位于另一个 html 表内时,水平滚动时列标题不会移动。当它不在 html 表中时它工作正常。我的示例实际上取自他们的水平滚动示例,
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
这是添加按钮以将数据导出到 csv、pdf、excel 的数据表示例...... fiddle here https://datatables.net/extensions/buttons/examp
是否有任何方法可以更改 angularjs 数据表中的按钮样式(colvis、copy、print、excel)。 vm.dtOptions = DTOptionsBuilder.newOptions
我试图弄清楚如何加入 2 个数据表并更新第一个但应用了过滤器。 DT DT2 b c 1: 1 10 2: 2 10 3: 3 10 4: 4 10 5: 5 10 6: 6 10 7: 7 10
我有一个数据表,其中包含许多包含值的列。我还有另一列,它定义了我需要选择哪些列的值。我很难找到一种方法来做到这一点。 这是一个简单的例子。 > d d value.1 value.2 name
我正在使用 data.table 包。我有一个数据表,表示用户在网站上的操作。假设每个用户都可以访问一个网站,并对其执行多项操作。我的原始数据表是 Action (每一行都是一个 Action ),我
我想知道每个变量在每个组中变化了多少次,然后将结果添加到所有组中。 我是这样找到的: mi[,lapply(.SD, function(x) sum(x != shift(x), na.rm=T)
有人可以向我解释一下如何向页眉或页脚添加按钮吗?Datatables 的开发者 Alan 说你必须离开网络服务器才能使用 Table Tools 来使用按钮。但我在独立计算机上离线运行 Datatab
我希望按 id 和按顺序(时间)计算不同的东西。 例如,与: dt = data.table( id=c(1,1,1,2,2,2,3,3,3), hour=c(1,5,5,6,7,8,23,23,23
我正在尝试在 JIRA 小工具中使用数据表,但在我的表准备就绪后,没有可用的分页按钮。我有一个表,我正在以最简单的方式使用数据表:$("#mytableid").dataTable(); 浏览页面元素
我有 responsive 表单中的数据表。 数据表生成 child rows在小型设备上。在这一行中,我有一些输入控件。这会导致两个问题。 第一个问题:**隐藏子行中的值不会进入表单数据。** 第二
我在使用 JQuery DataTable 捕获 keydown 事件时遇到问题。我的目标是允许用户使用箭头键导航表的行。因此,当用户按下箭头键时,我想捕获 keydown 事件并移动表的选定行(这是
是否有任何方法可以以编程方式更改显示的行数,而无需从下拉列表中手动选择? 我已经知道如何更改默认行数。当表首次加载时,我希望它加载所有行,然后“刷新”表以可能仅显示前 10 行。但我想以编程方式刷新表
我有一个数据表,我应该对其进行更改,例如我想更改内容的状态,但该内容位于表的第三页。当我更改它时,数据表会自行刷新到第一页。我想做的是保留选定的页码并在刷新后回调它。这可能吗? 顺便说一句,我正在使用
我是一名优秀的程序员,十分优秀!