Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 20

0
votes
answers
92 views
+10

Vue公司2.X + Laravel 5.4在資源管理器

0

我正在寫在Laravel 5.4和Vue的2 +紗 我得到的IE錯誤以下JS錯誤的一個項目不工作(版本9-11)Vue公司2.X + Laravel 5.4在資源管理器

  1. 語法錯誤(行,其中有在常量和箭頭功能的使用)
  2. 對象不支持屬性或方法「startsWith」

我缺少什麼?我想知道我是否在濫用babel或者其他的東西不見了。我在這裏完全感到沮喪,因爲我已經花了這麼多時間來研究爲什麼在涉及Vue 2組件時IE無法正常工作。任何幫助或建議在這裏將不勝感激!

app.js:

require('./bootstrap'); 

var Promise = require('es6-promise').Promise; 
require('babel-polyfill') 
Promise.polyfill(); 
window.Vue = require('vue'); 
import Vue2Filters from 'vue2-filters' 
import BootstrapVue from 'bootstrap-vue' 

我webpack.mix.js(試圖安裝巴貝爾)

mix.js('resources/assets/js/app.js', 'public/js') 
    .sass('resources/assets/sass/app.scss', 'public/css') 
    .babel('out.es6.js', 'out.js') 
    .options({ 
     polyfills: [ 
      'Promise' 
    ] 
}); 

我的package.json

{ 
    "private": true, 
    "scripts": { 
     "dev": "npm run development", 
     "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", 
     "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", 
     "watch-poll": "npm run watch -- --watch-poll", 
     "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", 
     "prod": "npm run production", 
     "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", 
     "build": "babel src -d lib" 
    }, 
    "devDependencies": { 
     "accounting": "^0.4.1", 
     "axios": "^0.15.3", 
     "babel-cli": "^6.26.0", 
     "babel-core": "^6.26.0", 
     "babel-loader": "^7.1.2", 
     "babel-polyfill": "^6.26.0", 
     "babel-preset-env": "^1.6.1", 
     "babel-preset-vue-app": "^1.3.1", 
     "bootstrap-sass": "^3.3.7", 
     "cross-env": "^3.2.3", 
     "jquery": "^3.1.1", 
     "laravel-mix": "0.*", 
     "lodash": "^4.17.4", 
     "vue": "^2.4.2", 
     "vue-template-compiler": "^2.4.2", 
     "webpack": "^3.8.1" 
    }, 
    "dependencies": { 
     "bootstrap-vue": "^1.0.0-beta.7", 
     "es6-promise": "^4.1.1", 
     "vee-validate": "^2.0.0-beta.17", 
     "vue-events": "^3.0.1", 
     "vue-strap": "^1.1.37", 
     "vue2-filters": "^0.1.9", 
     "vuelidate": "^0.5.0" 
    } 
} 
+0

我使用IE和AFAIK的Vue應用程序,Vue只需要Promises填充。但是如果您使用箭頭功能,請確保您使用正確的babel設置。我認爲你需要babel-preset-es2015 - 即。 – WaldemarIce

+0

['startsWith'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith)在IE中不可用,您需要對它進行填充。 Transpiling不會自動填充缺少的函數,只爲您翻譯語法。 – apokryfos

沙发
0
0

我成功化解問題通過運行babel代碼,將結果回顯到特定位置:

我的.bashrc:

{ 
    "presets": ["es2015"] 
} 

命令:

./node_modules/.bin/babel public/js/app.js > public/js/out.js 

然後在佈局文件,我包括公共/ JS/out.js文件,而不是公共/ JS/app.js

0
votes
answers
57 views
+10

請求標頭字段授權是Access-Control-Allow-Headers不允許的錯誤

1

我有一個VueJS應用程序和一個ExpressJS服務器端應用程序。在我的服務器我有以下:請求標頭字段授權是Access-Control-Allow-Headers不允許的錯誤

var allowCrossDomain = function(req, res, next) { 
    res.header('Access-Control-Allow-Origin', req.headers.origin); 
    res.setHeader("Access-Control-Allow-Credentials", "true"); 
    res.setHeader("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT"); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization"); 
    next(); 
} 
app.use(allowCrossDomain); 

不過,我不斷收到以下錯誤:

Request header field Authorization is not allowed by Access-Control-Allow-Headers in preflight response.

我送我的要求是這樣的:

import axios from 'axios' 

export default axios.create({ 
    baseURL: 'https://example.com', 
    timeout: 5000, 
    headers: { 
    'Authorization': 'Bearer ' + accessToken 
    } 
}) 

哪有我解決這個問題?我已經嘗試了很多解決方案並閱讀了這個。我已閱讀下面:

+0

您的服務器是否響應OPTIONS請求,瀏覽器會發送該請求來預檢請求以查看它是否被允許?我建議你看一下Chrome調試器中的網絡標籤,看看瀏覽器正在發送什麼以及你的服務器在響應什麼。通常,您可以在該信息中更準確地看到問題。 – jfriend00

沙发
0
1

的問題顯然不是導致Access-Control-Allow-Headers頭代碼即可獲得用於發送OPTIONS回覆 - 特別是針對的回覆。

爲了確保預檢OPTIONS得到正確處理,可以考慮安裝故宮cors包:

npm install cors 

然後做這樣的事情:

var express = require('express') 
    , cors = require('cors') 
    , app = express(); 
app.options('*', cors()); // preflight OPTIONS; put before other routes 

將處理CORS預檢OPTIONS請求和其他CORS無需您在應用程序代碼中從頭開始手動編寫您自己的處理。

https://www.npmjs.com/package/cors#configuration-option有關於所有選項的更多詳細信息。

0
votes
answers
55 views
+10

意外令牌進口 - 的jsfiddle

0

我試圖在的jsfiddle的toastr圖書館工作,但我不斷收到此錯誤:未捕獲的SyntaxError:意外的令牌進口意外令牌進口 - 的jsfiddle

這是我的jsfiddle:https://jsfiddle.net/50wL7mdz/77255/

這是我的代碼:

import VueToastr from '@deveodk/vue-toastr'; 
Vue.use(VueToastr, { 
    defaultPosition: 'toast-bottom-left', 
    defaultType: 'info', 
    defaultTimeout: 1000 
}); 
new Vue({ 
    el: '#app', 
    data: {  
    }, 
    created(){ 
    this.$toastr('success', 'it works!', 'Yeahh'); 
    }, 
    methods: {   
    } 
}) 

,這是圖書館參考:https://github.com/Deveodk/vue-toastr

是否進口關鍵字不行我n jsfiddle?

沙发
0
1

導入在JSFIDDLE上不起作用。您需要安裝軟件包並使用不支持的導入進行引用。相反,你可以做到這一點,

可以使用外部URL參考圖書館,

https://unpkg.com/[email protected]/dist/vue-toastr-2.js 
https://unpkg.com/vue-toastr-2/dist/vue-toastr-2.min.css 

DEMO

+0

由於它的工作。你能解釋爲什麼你改變我的行'this。$ toastr('success','it works!','Yeahh');'成功的方法嗎? 'toastr.success('Message','Title');'爲什麼我的代碼不能運行'this。$ toastr('success','It works!','Yeahh');' –

+0

Read這裏的文檔https://www.npmjs.com/package/vue-toastr-2。和參數 – Sajeetharan

+0

但是這裏https://github.com/Deveodk/vue-toastr這個代碼給出了'this。$ toastr('success','它工作!','Yeahh')'它只會在導入時才起作用已啓用? –

0
votes
answers
51 views
+10

如何處理toastr中按鈕的點擊事件?

1

我想處理toastr中的按鈕點擊事件。我使用這個庫:https://www.npmjs.com/package/vue-toastr-2如何處理toastr中按鈕的點擊事件?

這是我的代碼:

var app = new Vue({ 
    el: '#app', 
    data: { 
    message: 'vue-toastr-2' 
    }, 
    created: function() { 
    this.$toastr.success('Click here to fire an event <button @click="clickMe">Hello</button>', 'Title'); 
    }, 
    methods: { 
    clickMe() { 
     alert('Clicked'); 
     // write some more code 
    } 
    } 
}) 

基本上我想要被點擊clickMe的時候,我在組件內部功能應該被調用。我將如何做到這一點?

這是我的jsfiddle:https://jsfiddle.net/75154x8w/2/

+0

我猜你undless設計的自定義組件,通常是烤麪包的消息是沒有按鍵,這是不可能實現的。在這種情況下,你需要一個模態windo – Sajeetharan

+0

這是關閉烤麪包的按鈕? ..如果是的話,這是支持開箱。如果沒有,我不認爲這將是可能的使用這個組件,除非整個烤麪包可點擊而不是隻是按鈕 –

沙发
0
1
var app = new Vue({ 
    el: '#app', 
    data: { 
    message: 'vue-toastr-2' 
    }, 
    created: function() { 
    this.$toastr.success('Click here to fire an event <button onclick="app.clickMe()">Hello</button>', 'Title'); 
    }, 
    methods: { 
    clickMe() { 
     alert('Clicked'); 
    } 
    } 
}) 
+0

'onclick =「app.clickMe()」' ,與括號一起使用。 –

+0

@RichardMatsen Thanx,編輯。 – WaldemarIce

+0

乾杯,很好找。 –

0
votes
answers
35 views
+10

Vue的組件沒有渲染

0

我使用這個庫VUE-通知:https://github.com/cristijora/vue-notifyjsVue的組件沒有渲染

上述頁面狀態的文檔:component: { //is rendered instead of notification message因此我想給它動力組件,這樣我可以處理自定義事件。這是我的代碼:

Vue.use(vueNotifyjs) 
new Vue({ 
    el: '#app', 

    methods: { 
    addNotification(verticalAlign = 'top', horizontalAlign = 'right') { 
     this.$notify({ 
     component: function(){ 
      return { 
      template: '<h1>Hello</h1>' 
      }; 
     }, 
     horizontalAlign: horizontalAlign, 
     verticalAlign: verticalAlign, 
     type: "success" 
     }) 
    } 
    } 
}) 

這是我的jsfiddle:https://jsfiddle.net/z11fe07p/2706/

但這個詞Hello未在通知得到呈現。任何想法我錯過了什麼?

沙发
0
1

我認爲組件鍵應該有一個Vue組件的實例。 在您的情況,如下

Vue.component('custom-message',{ template:`<div>Hello World</div>` })

我已經在這個link修改擺弄上面創建VUE組件。

希望它有幫助

+0

好bhai。謝謝。 –

0
votes
answers
43 views
+10

Vuex:觀察狀態

0

邏輯我不知道如何組織我的Vuex商店給出以下問題。Vuex:觀察狀態

我有一個按鈕/操作數組,像100個。他們都在店裏像這樣的組織:

buttons: [ 
    { 
    text: 'Button 1', 
    doAction (store) {}, 
    mustShow (store) { 
     return state.variable > 10 && state.variable2.counter < 12 && !state.variable3 
    } 
    } 
    ... 
] 

我可以很容易地在我的視圖中顯示他們和他們的行動鏈接到點擊事件:

<button v-for"button in buttons" @click="button.doAction()"></button> 

的問題是,每個按鈕可以顯示或者不基於它只知道的任意複雜邏輯,正如您在mustShow函數中看到的那樣。每個按鈕都有其獨特的邏輯。

我可以很容易地僅返回其mustShow函數返回真有隻必須在店裏的特定狀態下顯示的動作按鈕的吸氣劑:

availableActions (state) { 
    return state.buttons.filter(s => s.mustShow()) 
} 

這工作的第一次,但問題是,當然這個getter沒有反應,因爲它沒有綁定到狀態變量,而是綁定到一個沒有反應的函數的結果。

你將如何組織代碼來完成這項工作?當然,人們可以將所有按鈕的顯示邏輯放入單個獲取器中。但是如果我希望按鈕的名稱也是動態的(作爲基於狀態中的任意變量計算其值的函數的結果)呢?

感謝

沙发
0
1

我覺得你在這裏走錯了路:作爲一個經驗法則,你不應該有複雜的對象,就像函數定義,定義您的商店的狀態。考慮商店狀態的一種方式是,應該能夠用JSON進行編碼,將其提供給朋友,然後如果將其解析回來並在同一個程序中使用它,則應該得到相同的結果,顯然國家內部的一個功能不適合這個。

我的建議是做一些事情,如:

const state = { 
    buttons: [ 
    { 
    text: 'Button 1', 
    id: 1 
    }, 
    ... 
    ] 
} 
... 
const actions = { 
    doAction ({commit}, {btnId}) { 
    // now you perform the action you want to do 
    ... 
    // finally if you want to change the state of your store you 
    // should commit a mutation, *do not change the state here!* 
    // let the mutation do their job 
    // here you put all the things the mutation may need to perform 
    // the change of the state 
    const payload = { btnId } 
    commit(changeSomethingInState, { payload }) 
    } 
} 

const mutations = { 
    changeSomethingInState (state, { payload }) { 
    state.something = payload 
} 
... 

這是店裏的定義。現在在你看來,你喜歡:

<button v-for"button in buttons" @click="dispatch('doAction', { btnId: button.id })"/> 
+0

那麼,基本上doAction(和mustShow)應該是一個具有長開關的大規模動作呢? – pistacchio

+0

這實際上取決於你點擊每個按鈕時會做什麼,如果你認爲你需要一個巨大的開關,你可能會考慮將vuex代碼進一步分割爲應用程序每個部分的模塊。 或者你可以像'btnAtions [1] =()=> {/ *按鈕1邏輯* /}'等等對每個id – Batato

+0

看看這個[vuex模塊](https:// vuex .vuejs.org/en/modules.html),它可能真的幫助你。 – Batato

0
votes
answers
53 views
+10

將大頁面分解成小部分

1

這實際上是一種代碼風格的問題,儘管由於我使用Vue.js來開發我的前端,我正在用Vue術語進行說明。將大頁面分解成小部分

我正在用Vue.js處理一個相當複雜的Web應用程序。即使使用單個文件組件,我也發現我的一些組件(例如CustomerEditor)變得龐大而笨拙,並且越來越難以編輯。現在,我來自Java背景(實際上是近年來的Grails/Groovy),而我的直覺總是將任何可能在不止一個地方使用的任何東西隔離到它自己的類中,以便儘可能保持DRY原則。

我一直在用Vue.js做這件事,把事情分解成更小的組件,我發現重用的可能性。即使如此,一些文件仍然很大。所以現在我正考慮一些以前從未真正做過的事情,即使這些較小的組件只在一個地方使用一次,也可以將一些組件拆分成更小的組件,僅僅爲了這個目的使代碼更易讀/可編輯。我不得不說這是一條相當陌生的道路,我只是想知道這是否是其他人的慣常做法?

+0

它完全依賴於代碼,但我認爲將組件分解爲更小的邏輯部分以使代碼更易於維護是沒有問題的,事實上這對我來說似乎是非常明智的。 –

+0

這取決於...如果沒有看到代碼,很容易就認同你應該這樣做,但有些項目有期限和成本,有時會使它更正確 - 呃可以提供更多的好處,讓開發人員放心,他們做到了正確的方式。如果時間不重要,請重構。 – Daniel

沙发
0
1

在Vue.js中很常見將大型組件分解爲更易於維護的較小組件,即使這些組件不會被重用。以下是來自官方的documentation報價:

組件意味着一起使用,最常見的父子關係:A組份可以在自己的模板中使用B組分。他們不可避免地需要彼此溝通:父母可能需要將數據傳遞給孩子,孩子可能需要通知父母發生在孩子身上的事情。然而,通過明確定義的界面儘可能使父母和孩子儘可能地分離也是非常重要的。這可以確保每個組件的代碼可以相對獨立地進行編寫和推理,從而使它們更易於維護並可能更易於重用。

請注意「使它們更易於維護,並且可能更易於重複使用。」最後。

要注意的另一個重要的事情是讓父母和孩子儘可能分離。這也將有助於使代碼更易於理解/維護。另一件有助於讓你的數據流更容易理解的事情是有一個one-way data flow

0
votes
answers
62 views
+10

VueJS 2 - KEYUP不起作用

0

我用Vuetify產生輸入字段:VueJS 2 - KEYUP不起作用

<v-text-field 
    label="Search" 
    v-model="search" 
    @keyup.enter="search()" 
    required 
></v-text-field> 

我想我可以鍵入了進入從這個領域進行搜索:

search() { 
    alert('test') 
} 

當我鑰匙高達上輸入鍵,此方法不執行......

+0

您可能需要使用@ keyup.enter.native = 「搜索()」 –

+0

@JoelSmith不工作太... –

沙发
0
1

確保您使用developer console進行調試,所以你可以看到你做了什麼錯誤消息:

  • 的WindowsCTRL ++

  • 的Mac? + 選項 +

你實際上有這裏的問題是,你已經聲明search作爲數據屬性method,所以你應該看到以下消息:

[Vue公司警告]:方法「搜索」已經被定義爲數據屬性。

爲了解決這個問題,你改變方法名或您的數據屬性名稱:

new Vue({ 
    el: '#app', 
    methods: { 
    search() { 
     alert('search') 
    }, 
    }, 
    data: { 
    searchTerm: '' 
    } 
}) 

,你應該找到它工作正常。

這裏的的jsfiddle:https://jsfiddle.net/er9wsfcy/

+0

謝謝您的幫助! –

0
votes
answers
46 views
+10

VueJs - 在窗口中添加類調整大小

1

使用Vuejs,根據瀏覽器窗口的大小,添加和刪除類的正確方法是什麼?VueJs - 在窗口中添加類調整大小

我一直在尋找'v-transitions',但是,我遇到的所有例子都是使用點擊事件。

沙发
0
1

我認爲最好的選擇是在安裝的組件上添加本地窗口事件偵聽器,並根據維度管理類。
然後,您可以在模板中使用:class="..."綁定(https://vuejs.org/v2/guide/class-and-style.html),並在其中傳遞一組類。
看這個小提琴的一個非常接近的例子https://jsfiddle.net/hr77p7qb/3/

+0

爲什麼你想對窗口調整大小作出反應?你在做響應應用程序嗎? – WaldemarIce

+0

是的,我是。我想添加一個類到我的左手菜單動畫目的 – Richy

+0

感謝您的答案...我正在尋找這個像2小時.. –

0
votes
answers
39 views
+10

如何訪問組件中的vuejs webpack配置變量?

0

我使用的模式來配置變量存儲在我的/config/[xxx].env.js文件,像這樣:如何訪問組件中的vuejs webpack配置變量?

module.exports = merge(prodEnv, { 
    NODE_ENV: '"development"', 
    API: { 
    ROOT: "'http://blah.blah.blah'" 
    }, 
    CONNECTORS: { 
    SPOTIFY: { 
     CLIENT_ID: "'blah'", 
     SCOPES: "'blah'", 
     REDIRECT_URI: "'blah'" 
    } 
    } 
}) 

注意,其中有些是沒有具體的環境變量,但我想將這些類型的配置變量放在一個集中的位置。

在我main.js,我可以通過process.env訪問罰款變量:

Vue.http.options.root = process.env.API.ROOT 

但在一個較低的水平組件,「進程」並不存在。

我知道,它不應該,因爲它不是全局定義的,但我無法弄清楚如何從一個組件中得到該process.env對象。我知道我可以讓它成爲全球性的,但那不是「感覺不錯」。

兩個問題:

  1. 有一些其他的Vue進口/對象,我失去了去process.env?

  2. 有沒有更好的方式來存儲這些類型的集中值,這可能是與環境相關的?我已經看到了諸如ruby配置gem之類的東西,它能夠在默認配置的基礎上對環境特定的配置進行分層。

嘗試故宮配置創業板,但由於某種原因它缺少 其他所需的國家防範機制,並且似乎對node.js的齒輪,它 感覺就像我做錯了什麼不使用什麼vue-cli webpack 提供。

沙发
0
2

一般公認的「行業標準」的方式有部件能夠從其他組件看到的數據,或者形成真正的任何地方是使用VueX。這與React中的Redux類似。它起初看起來有點複雜,但實際上它很簡單,VueX讓你無所不知,任何給定的組件都能看到任何給定的數據,並同時解決了許多其他問題。試試看。

當然,另一種方式是在你的應用程序模塊,實現一種「單例模式」,使任何代碼都可以只轉儲數據和獲取數據了。

+0

是啊,我用Vuex了。這是有道理的,我只是將它轉儲到應用程序加載的商店。 –

+0

Vuex的意思是在應用程序爲客戶端加載後會改變的狀態。如果這些構建配置變量不會通過VUE應用程序的生命週期改變你可能會更好把他們的服務容器內,如[VUE容器(https://www.npmjs.com/package/vue-container )。 – Sean