我最近遇到了一个相当讨厌的错误,其中代码是<select>通过JavaScript动态加载的.这种动态加载<select>具有预先选择的值.在IE6中,我们已经有了修复所选内容的代码<option>,因为有时它<select>的selectedIndex值与所选<option>的index属性不同步,如下所示:
field.selectedIndex = element.index;
Run Code Online (Sandbox Code Playgroud)
但是,此代码无效.即使selectedIndex正确设置了字段,最终也会选择错误的索引.但是,如果我alert()在正确的时间插入声明,则会选择正确的选项.考虑到这可能是某种时间问题,我尝试了一些随机的东西,我之前在代码中看到过:
var wrapFn = (function() {
var myField = field;
var myElement = element;
return function() {
myField.selectedIndex = myElement.index;
}
})();
setTimeout(wrapFn, 0);
Run Code Online (Sandbox Code Playgroud)
这有效!
我已经找到了解决问题的方法,但是我很不安,因为我不知道为什么这会解决我的问题.有人有官方解释吗?使用"稍后"调用我的功能可以避免哪些浏览器问题setTimeout()?
为了查看节点模块[webpack]的所有版本,我在windows命令提示符下执行了以下命令
npm view webpack versions
Run Code Online (Sandbox Code Playgroud)
此命令仅显示前100个版本,稍后显示"331更多"文本.
我怎样才能列出所有版本?
以下是我的"Dockerfile"的内容
FROM node:boron
# Create app directory
RUN mkdir -p /usr/src/app
# change working dir to /usr/src/app
WORKDIR /usr/src/app
VOLUME . /usr/src/app
RUN npm install
EXPOSE 8080
CMD ["node" , "server" ]
Run Code Online (Sandbox Code Playgroud)
在这个文件中,我期待"VOLUME./ usr/src/app"指令将主机中当前工作目录的内容挂载到容器的/ usr/src/app文件夹中.
如果这是正确的方法,请告诉我?
下面是我的tsconfig.json文件,其中我将目标设置为"es5",模块设置为"es6"
{
"compilerOptions": {
"target": "es5",
"module": "es6"
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是因为模块[import/export]是es6和NOT es5的一部分,转换后的javascript代码不应该有import/export语句.但即使目标是es5,生成的javascript代码也有导入/导出语句,怎么可能?
为了在Angular 2中提交表单,我们可以使用表单的"submit"或"ngSubmit"事件.
<form #frm="ngForm" (submit)="add(frm.value)">
...
</form>
<form #frm="ngForm" (ngSubmit)="add(frm.value)">
...
</form>
Run Code Online (Sandbox Code Playgroud)
想知道两者的区别是什么?
在我的应用程序中,我希望有基于条件的点击事件,
<div class="trashIconDiv" (click)="if(idx > 0) {removeSelected(item.spId)}">
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,只有当idx> 0时才应执行removeSelected函数,任何想法如何实现
AngularJS 1.x具有ngCloak指令,用于防止浏览器以原始(未编译)形式短暂显示Angular html模板.
Angular 2是否具有任何此类指令或功能来防止此类原始(未编译)表单显示.
在我的应用程序中,我使用以下命令安装了几个节点模块
npm install <modulename>
Run Code Online (Sandbox Code Playgroud)
我忘了提"--save"将依赖列表保存到package.json文件.
现在我想更新package.json文件中的依赖项而不手动更新文件.知道如何做到这一点?
在我的示例应用程序中,我编写了一个功能模块"TempModule",下面是代码.
import { NgModule } from '@angular/core';
import { CommonModule} from '@angular/common';
import { TempOneComponent } from './temp.one.component';
import { TempTwoComponent } from './temp.two.component';
import { tempRouting } from './temp.routing';
@NgModule({
declarations: [ TempOneComponent,
TempTwoComponent],
imports: [ NgModule,
CommonModule,
tempRouting]
})
export class TempModule {}
Run Code Online (Sandbox Code Playgroud)
我指的是根模块中的TempModule,下面是根模块代码
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
//-- routing import
import { routing,
appRoutingProviders} from './app.routing';
//-- root component import
import { AppComponent …Run Code Online (Sandbox Code Playgroud) 在我的示例Angular 2 SPA中,我使用了Webpack 2
通过创建webpack.config.js文件,我能够获得"1"和"2",以下是此文件的内容
'use strict';
const webpack = require('webpack');
module.exports = {
devtool: 'source-map',
entry: './src/main.js',
plugins: [
new webpack.optimize.UglifyJsPlugin({
minimize: true,
compress: false
})
],
output: {
filename:'./src/bundle.js'
}
}
Run Code Online (Sandbox Code Playgroud)
"webpack.optimize.UglifyJsPlugin"插件执行Tree Shaking和minfication,将我的bundle.js文件大小从3 mb减少到1 mb.
接下来为了实现AoT编译,我使用了@ ngtools/webpack,以下是带有AoT相关代码的修改过的webpack.config.js文件.
'use strict';
const webpack = require('webpack');
const AotPlugin = require('@ngtools/webpack').AotPlugin;
module.exports = {
devtool: 'source-map',
entry: './src/main.js',
module: {
rules: [
{
test: /\.ts$/,
loader: '@ngtools/webpack'
}
]
},
plugins: [
new webpack.optimize.UglifyJsPlugin({ …Run Code Online (Sandbox Code Playgroud) angular ×5
node.js ×2
docker ×1
dockerfile ×1
dom ×1
event-loop ×1
javascript ×1
npm ×1
typescript ×1
webpack ×1