然而我卻不知道事件會在兄弟元素間冒泡~
ng-zorro專注于PC端組件的開發(fā)并不適合于移動端的開發(fā)
angular移動端組件當然首推 ionic 完美配合angular
ionic2開始就基于angular2進行架構(gòu)(現(xiàn)已發(fā)布ionic3)結(jié)合TypeScript完全沒有問題 結(jié)合Cordova還能打包多平臺APP 專門的開源組織去維護 社區(qū)活躍 使用的人很多 遇到的問題網(wǎng)絡上面基本都有 我自己本身也有使用一段時間
另外一個就是 ngx-weui https://cipchk.github.io/ngx-... 基于angular的微信UI庫 開發(fā)微信相關(guān)應用比較舒服 個人維護 暫時沒用過
以334為例:
let reg = /(.{3})(.{3})(.{4})/;
"0123456789".match(reg);Ecmobile
// 獲取17px
dom.style.transform.match(/translate3d.+,(.+),/)[1].trim()數(shù)據(jù)在電腦的excel,
卻要做了一個手機H5網(wǎng)頁來保存數(shù)據(jù)? 感覺很怪
justify-content: flex-start;不可以嗎?主要不理解多區(qū)塊靠左置中什么意思。
前面寫了一些tips, 可以參考下。
ng-content/ng-container
那就把參數(shù)換成對象的方式;
可以放組件的,不過turn.js沒有vue的版本,可能要自己封裝一下
class Main extends egret.DisplayObjectContainer {
constructor() {
super();
this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);
}
private _txInfo11:egret.TextField;
private container1;
private onAddToStage(event:egret.Event) {
this.container1 = new egret.DisplayObjectContainer();
var robot:Robot = new Robot();
this.container1.addChild(robot);
this._txInfo11 = new egret.TextField;
this.addChild( this._txInfo11 );
this._txInfo11.size = 28;
this._txInfo11.x = 400;
this._txInfo11.y = 10;
this._txInfo11.text = "換頁";
var _bgInfo11:egret.Sprite = new egret.Sprite();
this.addChildAt(_bgInfo11, this.numChildren - 1 );
_bgInfo11.x = this._txInfo11.x;
_bgInfo11.y = this._txInfo11.y;
_bgInfo11.graphics.clear();
_bgInfo11.graphics.beginFill( 0xff7f50, .5 );
_bgInfo11.graphics.drawRect( 0, 0, this._txInfo11.width, this._txInfo11.height );
_bgInfo11.graphics.endFill();
_bgInfo11.touchEnabled = true;
_bgInfo11.addEventListener( egret.TouchEvent.TOUCH_TAP, ()=>{
if(this.contains(this.container1)){
this.removeChild(this.container1);
}else{
this.addChild(this.container1);
}
}, this );
}
}
<view class='tab'>
<view class='tab-menu'>
<view class='menu' wx:for="{{tabs}}" wx:key="{{index}}" data-tabidx="{{index}}" bindtap='switchTab'>
<text>{{item}}</text>
<view class='currentTab' wx:if="{{tabIdx === index}}"></view>
</view>
</view>
<swiper class='tab-content' current='{{tabIdx}}' bindchange='scrollTab'>
<swiper-item>
<view class='question-wrap'>
<view class='question-header'>
<text>[{{questions[current].type}}]</text>
<text class='total'><text class='current'>{{current+1}}</text>/{{questions.length}}</text>
</view>
<view class='title'>{{questions[current].title}}</view>
<view class='options'>
<view class='opt {{questions[current].right === index ? "right" : ""}}' wx:for="{{questions[current].options}}" wx:key="{{index}}">
<view class='tag'>
<image src='/icons/right.png' wx:if="{{questions[current].right === index}}"></image>
</view>
<view class='content'>{{item.content}}</view>
<text class='rate'>{{item.rate}}</text>
</view>
</view>
</view>
<view class='btns'>
<button disabled='{{current <= 0}}' bindtap="showPre">上一題</button>
<button disabled='{{current >= questions.length-1}}' bindtap="showNext">下一題</button>
</view>
</swiper-item>
<swiper-item>
<scroll-view scroll-y class='totalRank' lower-threshold="150" bindscrolltolower="getRank">
<view class='user' wx:for="{{ranks}}" wx:key="{{index}}">
<image src='{{item.img_url}}' class='avator'></image>
<view class='name'>{{item.name}}</view>
<view class='score'>{{item.score}}分</view>
<view class='order'>第{{item.no}}名</view>
</view>
</scroll-view>
</swiper-item>
</swiper>
</view>
page {
display: flex;
flex-direction: column;
height: 100%;
background: #fff;
font-size: 30rpx;
}
.tab {
flex: 1;
display: flex;
flex-direction: column;
}
.tab-content {
flex: 1;
overflow-y: auto;
}
.tab-menu {
height: 104rpx;
display: flex;
}
.currentTab {
background: #42c541;
height: 2rpx;
width: 132rpx;
position: absolute;
bottom: 20rpx;
}
.tab-menu .menu {
flex: 1;
text-align: center;
font-size: 28rpx;
display: flex;
align-items: center;
justify-content: center;
position: relative;
}
swiper-item {
overflow: auto;
}
.totalRank {
height: 100%;
}
.avator {
width: 60rpx;
height: 60rpx;
border-radius: 50%;
}
.user {
height: 88rpx;
display: flex;
align-items: center;
background: #f4f4f4;
padding: 0 43rpx;
margin: 30rpx 30rpx 0 30rpx;
border-radius: 10rpx;
box-sizing: border-box;
font-size: 24rpx;
}
.name, .score, .order {
flex: 1;
text-align: center;
}
.name{
margin-left: 50rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.order {
color: #42c541;
text-align: right;
}
.question-wrap{
display: flex;
flex-direction: column;
margin: 0 30rpx;
border: 2rpx solid #DCDCDC;
border-radius: 10rpx;
box-sizing: border-box;
padding: 0 50rpx;
margin-top: 40rpx;
}
.question-header{
display: flex;
justify-content: space-between;
margin-top: 60rpx;
}
/* .question-wrap .options{
max-height: 600rpx;
overflow: auto;
} */
.question-header .total{
color: #E3E3E3;
}
.question-header .current{
color: #353535;
}
.question-wrap .title{
margin-top: 36rpx;
min-height: 178rpx;
}
.opt{
text-align: center;
position: relative;
background: #F0F0F0;
margin-bottom: 44rpx;
border-radius: 10rpx;
padding: 26rpx 20rpx;
display: flex;
align-items: center;
}
.opt image, .opt .tag{
width: 46rpx;
height: 34rpx;
}
.opt .rate{
min-width: 3em;
}
.opt .content{
flex: 1;
text-align: center;
}
.right{
background: #FF920B;
color: #FFF;
}
.btns{
display: flex;
margin-top: 60rpx;
position: fixed;
left: 0;
bottom: 0;
width: 100%;
height: 148rpx;
}
.btns button{
width: 260rpx;
height: 88rpx;
line-height: 88rpx;
text-align: center;
border-radius: 10rpx;
color: #FFF;
background: #41C629;
}
.btns button:active{
background: #179B16;
color: #A2D7A2;
}
.btns button[disabled]:active{
background: #F7F7F7;
color: #ACACAC;
}
Page({
data: {
tabs: [
'題目分析',
'成績排名'
],
ranks: [
{ name: '張三', score: 93 },
{ name: '李四', score: 60 },
{ name: '趙六', score: 8 },
{ name: '王五', score: 1000 },
{ name: '馮二', score: 45 }
],
questions: [],
current: 0,
tabIdx: 0
}
})原貼的第三個回答中修改一下:
const routes: Routes = [
{ path: '', redirectTo: 'login', pathMatch: 'full' },
//自己填好LoginModule路徑
{ path:'login',loadChildren:' /*這里填上login.module的絕對路徑*/
login.module#LoginModule'
}];首先,ts里面的EvaluateInfo不能設置為private,這樣的話不能在HTML里面綁定的,
然后,可用用雙向綁定,keyup方法可以在每次按鍵的時候調(diào)用:
// html
<textarea [(ngModel)]="EvaluateInfo.content" (keyup)="getValue()" value="content" name="content"></textarea>
// ts
EvaluateInfo = {content: ''};
getValue(){
console.log(this.EvaluateInfo.content)
}
或者下面的也行,在每次按鍵的時候把textarea的值傳進去:
// html
<textarea #textArea (keyup)="getValue(textArea.value)" name="content"></textarea>
// ts
getValue(value){
console.log(value)
}原則上來講404也是頁面
又是自己來回答。。。
我研究了一下,在調(diào)用微信接口的時候,那一瞬間,就已經(jīng)跳轉(zhuǎn)到微信的頁面了(瀏覽器地址是微信的域名),然后微信在調(diào)用自己的接口,跳轉(zhuǎn)到微信支付頁面。。。
所以微信支付接口文檔上面有說明,H5支付不建議在APP端使用
https://pay.weixin.qq.com/wik...
這是你用的這個插件的問題,它把dom提到了body下,超出了vue的范圍,路由切換的時候vue已經(jīng)控不到它了。
你找下fullpage這個插件有沒有關(guān)閉這個dom的方法,沒有就自己寫一個,在路由切換時手動關(guān)閉
計算屬性是最好的,當然你拉回來的list直接去重也可以。
rmSome = function(arr, key) {
let tempObj = {}
arr.forEach(item => {
if (tempObj[item[key]]) {
return
} else {
tempObj[item[key]] = item;
}
})
return Object.values(tempObj)
}
rmSome([{a:1},{a:2},{a:2}],'a')北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產(chǎn)業(yè)為響應國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復興的升級產(chǎn)業(yè)鏈。利用北京大學優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓領(lǐng)域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。