在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/ HTML問(wèn)答
赱丅呿 回答

刷新頁(yè)面出現(xiàn)的話可以看看willMount或者DidMount發(fā)了什么ajax請(qǐng)求

淺淺 回答

你沒(méi)有進(jìn)入到你的項(xiàng)目的根目錄(即package.json所在的目錄)

野橘 回答

clipboard.png

已解決。
問(wèn)題原因應(yīng)該是用戶(hù)觸發(fā)鍵盤(pán)事件時(shí),antd給input標(biāo)簽添加了內(nèi)連樣式:width: 0。樣式覆蓋一下就可以了。

網(wǎng)妓 回答

其實(shí)我看了半天,沒(méi)有理解你要想問(wèn)什么,特別是你所謂的“自定義的字段名數(shù)組跟隨數(shù)值數(shù)組同步排序” 到底是什么,即你應(yīng)該以數(shù)據(jù)表達(dá)你排序前的情況和排序后的情況,以及排序的依據(jù)。

故林 回答

我之前也碰到這樣問(wèn)題,后來(lái)理解了
初始化時(shí)候conponData = {}空對(duì)象里面的endTime是undefined

別硬撐 回答

你可以這樣:

<ul v-for="(parent,i) in obj">
   <li v-for="(child,index) in parent" @click="Identify(i,index)">{{child}}</li>
</ul>

取值:

Identify(i,index){
   console.log(i);
   console.log(index);
}

這樣你就擁有兩個(gè)索引,做你任何你想做的事情啦。

笑忘初 回答

<p>{{text}}<span>{{less ? '...省略' : '收起'}}<span></p>

逗婦惱 回答

@NextStack

App.vue:

<template>
  <div>
    <popup v-model="visible">
      我是popup組件
    </popup>
  </div>
</template>
<script>
  export default {
    data () {
      return {
        visible: true
      }
    },
    created () {
      this.$toast('啦啦啦!我是賣(mài)報(bào)的小當(dāng)家。')
    }
  }
</script>
<style lang="scss" rel="stylesheet/scss" type="text/scss">
</style>

運(yùn)行的效果:
圖片描述

popup全局組件已經(jīng)注冊(cè)成功了,上面效果圖就說(shuō)明了。但是toast里面引用就報(bào)錯(cuò)。
圖片描述

編譯出的html文件:

...
<script type="text/javascript" src="/static/js/common.js?f56345f"></script>
<script type="text/javascript" src="/static/js/store.js?f56345f"></script>
...

common.js是公共js文件,store.js是對(duì)應(yīng)頁(yè)面的js文件。common.jsstore.js里面都引用了.vue文件,導(dǎo)致2個(gè)加入了vue.esm.js這文件,相當(dāng)于存在2個(gè)Vue對(duì)象,所有我就嘗試了我提問(wèn)時(shí)寫(xiě)的2種寫(xiě)法(保證common.js 和 store.js使用的是同一個(gè)Vue對(duì)象),依然差強(qiáng)人意,需要各位幫忙看看如何解決這問(wèn)題。

當(dāng)然改為單頁(yè)面,單文件入口就不會(huì)出現(xiàn)以上問(wèn)題。因項(xiàng)目需求只能做多頁(yè)面,多入口。


補(bǔ)充:
目前已經(jīng)解決問(wèn)題經(jīng)NextStack的提點(diǎn),使用CommonChunkPlugin成功解決問(wèn)題,代碼修改如下:

// common.js
import Toast from './plugins/toast'
import Popup from './components/popup'

export default function (Vue) {
  Vue.use(Toast)
  Vue.use(Popup)
}
// 對(duì)應(yīng)頁(yè)面的js
import Vue from 'vue'
import install from '../../common'
import App from './App.vue'

install(Vue)

new Vue({
  template: '<App/>',
  components: {App}
}).$mount('#app')

代碼如上修改,并且webpack設(shè)置里移除common這個(gè)入口。這樣只會(huì)出現(xiàn)一個(gè)vue對(duì)象,然后使用CommonChunkPlugin把公用代碼給提取出來(lái)。

webpack設(shè)置:

const fs = require('fs')
const path = require('path')
const webpack = require('webpack')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const ExtractTextPlugin = require('extract-text-webpack-plugin')
const config = require('../package.json')

/**
 * 獲取絕對(duì)路徑
 * @param dir
 * @returns {string|*}
 */
function resolve (dir) {
  return path.join(process.cwd(), dir)
}
/**
 * vue css加載器
 * @returns {
 *  {css: *, scss: *}
 * }
 */
function cssLoaders () {
  const cssLoader = {
    loader: 'css-loader',
    options: {
      minimize: process.env.NODE_ENV !== 'development',
      sourceMap: false
    }
  }

  function generateLoaders (loader, loaderOptions) {
    const loaders = [cssLoader]
    if (loader) {
      loaders.push({
        loader: loader + '-loader',
        options: Object.assign({}, loaderOptions, {
          sourceMap: false
        })
      })
    }

    if (process.env.NODE_ENV !== 'development') {
      return ExtractTextPlugin.extract({
        use: loaders,
        fallback: 'vue-style-loader'
      })
    } else {
      return ['vue-style-loader'].concat(loaders)
    }
  }

  return {
    css: generateLoaders(),
    scss: generateLoaders('sass')
  }
}

const pages = fs.readdirSync(resolve('src/pages'))

module.exports = function ({plugins, htmlPluginOptions}) {
  const htmlPlugins = []
  const entrys = {
    // 'common': './src/common.js'
  }

  for (const name of pages) {
    const entry = `./src/pages/${name}/index.js`
    entrys[name] = [entry]
    if (process.env.NODE_ENV === 'development') entrys[name].push('./build/dev-client')
    htmlPlugins.push(new HtmlWebpackPlugin(Object.assign({
      filename: process.env.NODE_ENV === 'development' ? name + '.html' : resolve(config.id + '/' + name + '.html'),
      template: `src/pages/${name}/index.html`,
      inject: true,
      // chunks: ['common', name],
      chunks: ['common.js', name],
      hash: false,
      chunksSortMode (a, b) {
        return a.id < b.id ? 1 : -1
      },
      config: {
        env: process.env.NODE_ENV
      }
    }, htmlPluginOptions)))
  }

  const chunks = Object.values(entrys)
  htmlPlugins.push(
    new webpack.optimize.CommonsChunkPlugin({
      name: 'vendors',
      chunks: chunks,
      minChunks: chunks.length
    })
    // new webpack.optimize.CommonsChunkPlugin({
    //   name: 'common',
    //   chunks: ['common']
    // })
  )

  return {
    entry: entrys,
    output: {
      path: resolve(config.id),
      filename: 'static/js/[name].js?[hash:7]',
      publicPath: `/`,
      chunkFilename: 'static/js/[id].[hash].js'
    },
    resolve: {
      extensions: ['.vue', '.js'],
      alias: {
        '@': resolve('public/src'),
        'vue$': 'vue/dist/vue.esm.js'
      }
    },
    devtool: process.env.NODE_ENV !== 'development' ? false : '#cheap-module-eval-source-map',
    module: {
      rules: [
        {
          test: /\.vue$/,
          loader: 'vue-loader',
          options: {
            loaders: cssLoaders()
          }
        },
        {
          test: /\.css$/,
          use: process.env.NODE_ENV !== 'development' ? ExtractTextPlugin.extract('css-loader') : ['style-loader', 'css-loader']
        },
        {
          test: /\.js$/,
          loader: 'babel-loader',
          include: [resolve('src')]
        },
        {
          test: /\.(png|jpe?g|gif|svg|woff2?|eot|ttf|otf)(\?.*)?$/,
          loader: 'url-loader',
          options: {
            limit: 10000,
            name: `[path][name].[ext]?[hash:7]`
          }
        }
      ]
    },
    // plugins: htmlPlugins.concat(plugins)
    plugins: htmlPlugins.concat(plugins).concat([new webpack.optimize.CommonsChunkPlugin('common.js')])
  }
}

被注釋掉的代碼,是原配置。已經(jīng)成功解決了,非常感謝NextStack

祈歡 回答
  1. 如果后端是用這個(gè)校驗(yàn)過(guò)期時(shí)間,那是需要帶上的
  2. token會(huì)過(guò)期是沒(méi)錯(cuò)的,但是每次請(qǐng)求之后,后端應(yīng)該是把這個(gè)token的有效期重置為最大。不需要每次都返回token。只有過(guò)期的時(shí)候才會(huì)返回新的token,這個(gè)時(shí)候前端需要更新一下token
浪婳 回答

keypress事件的兼容性不好,不建議監(jiān)聽(tīng)這個(gè)事件。
clipboard.png

可以監(jiān)聽(tīng)input事件,然后用正則判斷字符串是否合法:

var inputer = document.getElementById("inputer");

var lastValue = '';
inputer.addEventListener("input", function(e) {
  if (!/^\d*$/.test(e.target.value)) {
    this.value = lastValue;
  }
}, false);

DEMO:
https://codepen.io/CodingMonk...

青檸 回答

ui = render(state)更合理。
先明確下概念:

  • 組件間的狀態(tài)傳遞(props): 從父組件到子組建的數(shù)據(jù)傳遞
  • 組件的內(nèi)部狀態(tài)(state): 只能定義在組件內(nèi)部, 定義組件的自己的狀態(tài)

props也可以用來(lái)構(gòu)建頁(yè)面,但是props不是自發(fā)性改變的,他是父組件傳遞下來(lái)的,可以理解為這是一個(gè)常量,但是state就不一樣了,在組件的生命周期中,state隨時(shí)可以通過(guò)setState改變,相應(yīng)UI也會(huì)進(jìn)行改變,可以理解為這是一個(gè)變量。所以說(shuō)呢,雖然propsstate都可以影響UI改變,但是在組件render之后再update組件(組件內(nèi)部數(shù)據(jù)更新)只能通過(guò)setState了。

先設(shè)置lock 為true,動(dòng)態(tài)添加數(shù)據(jù)的時(shí)候,請(qǐng)求沒(méi)有成功之前會(huì)會(huì)出現(xiàn)一個(gè)正在加載標(biāo)示,請(qǐng)求成功,顯示數(shù)據(jù),lock值變?yōu)閒alse,鎖定加載,不知道這樣解釋?zhuān)隳苊靼酌?/p>

薄荷糖 回答
復(fù)制粘貼可用
function getInfo(pagenum,createtime,location) {

    sessionStorage.setItem('pagenum', pagenum); //保存當(dāng)前頁(yè)數(shù)
    $.ajax({
        type: 'post',
        url: 'http://127.0.0.1:8080/gateway/CaptureandRecord?method=getvideo',
        dataType: 'text',
        data: {
        'pagenum': pagenum,
        'createtime':createtime,
        "location":location,
        },
        async: false,
        success: function(data) {
        console.log("data"+data);
        var data = JSON.parse(data);
        console.log("data"+data);
        var list = data.videos;

        if (data.flag == "success") {
            $('#content .row').html("");
            for (var i = 0; i < (data.countmessage<parseInt(pagenum)*8?data.countmessage-(parseInt(pagenum)-1)*8:8); i++) {
                $('#content .row').append(

                    '<div class="col-md-3">' +
                    ' <div class="view">' +
                    '<video id="'+list[i].uid+'" src="' + list[i].video + '" controls="controls">' +
                    '</video>'+
                    '</div>' +
                    '<ul>' +
                    '<li>' +
                    '<span>時(shí)間:</span>' +
                    '<span>' + data.time[i] + '</span>' +
                    '</li>' +
                    '<li>' +
                    '<span>位置:</span>' +
                    '<span>' + list[i].location + '</span>' +
                    '</li>' +
                    '<li>' +
                    '<button class="delete" onclick="delInfo(this,' + list[i].uid + ')" data-whatever="' + list[i].uid + '">刪除</button>' + 
                    '</li>' +
                    '</ul>' +
                    '</div>'
                )
            }
        }
        }
    })
}

/**
 * [delInfo 刪除]
 * @param   當(dāng)前對(duì)象 this
 * @param   ID
 * @return   
 */
function delInfo(obj,id) {
    var t = obj;
    $.ajax({
        type: 'post',
        url: 'http://127.0.0.1:8080/gateway/CaptureandRecord?method=deletevideobyuid',
        dataType: 'text',
        data: {
            "uid": id,
        },
        async: true,
        success: function(data) { 
            var data = JSON.parse(data);
            if (data.flag == 'success') {
                alert('刪除成功');
             $(t).parents('.col-md-3').remove();
            } else {
                alert("刪除失敗");
            }
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            console.log(XMLHttpRequest.status);
            console.log(XMLHttpRequest.readyState);
            console.log(textStatus);
        },
    })
}