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: 42

0
votes
answers
23 views
+10

使用Vuetify,當我嘗試打印一個頁面時,它只顯示第一個頁面

7

我有一個使用Vuetify構建的應用程序。使用Vuetify,當我嘗試打印一個頁面時,它只顯示第一個頁面

其中一頁用於訂單,我希望用戶能夠打印它。

的問題是,如果我在頁面已滾動,僅在第一頁顯示有滾動條:

enter image description here

我怎樣才能使它顯示打印所有其他網頁?

UPDATE

我有一個.scroll-y類的主要部分,如果我用這個CSS的打印:

@media print{ 
     body, 
     html { 
     height: 5000px !important; 
     } 

     .scroll-y { 
     height: 100% !important; 
     } 
    } 

它的工作原理,但顯然我不想的一組高度5000px每打印, 我可以使用js來計算高度並設置它,但我想知道是否有更好/更簡單的方法?

+0

你是否使用了'v型數據table'?我假設滾動條只是可用數據的反映(如分頁?)。如果不是,你必須在打印時調整你的css以不滾動例如使用@media screen和@ media print規則。 – nathanvda

+0

我正在使用'v-data-table'但沒有分頁,而且我也在使用'@media print' css,查看我的更新 – Tomer

+0

爲什麼你需要身體上的「高度」?使用絕對定位? – nathanvda

沙发
0
2

你必須改變溢出和主要部分的(身體上我的例子)高度:

@media print { 
    body { 
    overflow: auto; 
    height: auto; 
    } 
} 

鏈接到演示上codepen: https://codepen.io/andersanmiguel/pen/NXyxPE?editors=0100(你可以將其導出形成有)

板凳
0
2

你必須改變CSS,添加這樣的事情:

@media print { 
    body { 
    overflow: auto; 
    height: auto; 
    } 
    .scroll-y { 
    height: auto; 
    overflow: visible; 
    } 
} 

所以.scroll-y佔據所有空間需要,可以將d身體會長到正確的印刷尺寸。 當然,你必須在增加了對打印分頁符html元素,典型的打印尺寸(即A4)和添加視圖的打印預覽,其中需要一個分手的打印元素

<div class="print-break-page"></div> 

與CSS:

.print-break-page { 
     page-break-after: always; 
} 
+0

我怎麼知道在哪裏添加'

'內容是動態的? – Tomer

+0

我做網頁的打印預覽,並根據我所看到的,我選擇把這個div打破內容的地方。例如,如果你有一個元素列表,並在預覽中看到頁面和下一個元素之間交叉的第21個元素,那麼在第21個元素之前,放置這個div。 –

+0

即使我可以做到這一點,這是很難的,因爲數據是動態的,我仍然依賴於屏幕大小,因爲在較小的屏幕上,我會看到更少的元素 – Tomer

地板
0
0

感謝@Ander和@ g.annunziata指着我在正確的方向,爲我工作的最終設置爲:

body, 
    .scroll-y { 
    overflow: visible !important; 
    height: auto !important; 
    } 
0
votes
answers
13 views
+10

Laravel Redirect Intended沒有做任何事

0

我目前有一個身份驗證功能,我在從Vue組件登錄時擊中。現在它會記錄用戶,但不會從控制器發生重定向。我不確定是否使用Vue組件導致了這一點。如果有的話,也許我可以在回覆中返回預期的網址?在我login.vue組件Laravel Redirect Intended沒有做任何事

public function authenticate(Request $request) 
    { 

     //Validate the login and log errors if any 
     $this->validate($request, [ 
      'email'  => 'required', 
      'password' => 'required', 
     ]); 

     //if they have stuff posted get it 
     $email  = $request->get('email'); 
     $password = $request->get('password'); 


     //See if they are actually a user 
     if (Auth::attempt(['email' => $email, 'password' => $password])) { 

      return redirect()->intended('/dashboard'); 

     } else { 
      return response()->json([ 
      'response' => 'error', 
      'error' => 'Email or Password not correct.', 
      ]); 
     } 
    } 

登錄方法:

login(){ 

      this.isLoading = true; 

      this.form.post('/login') 
       .then(data => { 

        this.isLoading = false 

        if(data.response == 'success'){ 

        //Maybe get a url in the response and redirect here?? 

        } else { 
        this.serverError= data.error 
        } 

       }) 
       .catch(error => { 
        this.isLoading = false 
       }) 

      } 

使用Laravel 5.4

+1

重定向。不從laravel – C2486

+0

從Laravel重定向RESTful API沒有太大意義,因爲我看到它。我會返回用戶實例或類似的東西,並從前端進行重定向。 – Camilo

+0

我剛剛發佈了適合我的答案。我只是將預期的URL返回到我的前端,並讓它處理它。謝謝@ user2486 – Packy

沙发
0
0

,而不是使用方法的目的,爲什麼不使用redirect()->route()呢?

或者您正在等待URL響應。您不應該使用redirect()方法。

對於您給定的代碼,您可能需要考慮這一點。

if (Auth::attempt(['email' => $email, 'password' => $password])) { 

      return response()->json([ 
       'response' => 'success', 
       'url' => Session::get('url.intended', route('route_of_your_dashboard')) 
      ]); 

     } else { 
      return response()->json([ 
      'response' => 'error', 
      'error' => 'Email or Password not correct.', 
      ]); 
     } 
板凳
0
2

對於任何人都希望:

在我的身份驗證功能:

if (Auth::attempt(['email' => $email, 'password' => $password])) { 

      return response()->json([ 
       'response' => 'success', 
       'url' => Session::get('url.intended', url('/')) 
      ]); 

     } else { 
      return response()->json([ 
      'response' => 'error', 
      'error' => 'Email or Password not correct.', 
      ]); 
     } 

在我VUE組件登錄方法從vuejs

if(data.response == 'success'){ 
        //console.log(data); 
        window.location.href = data.url 
        } else { 
        this.serverError= data.error 
        } 
+0

檢查我的答案。看起來你希望得到一個URL字符串結果而不是HTML響應。因爲vue是一個javascript –

+0

@KennethSunday是的,看起來像我們發佈了相同類型的東西。起初我只是感到困惑,因爲沒有重定向發生,但意識到我需要我的前端來處理我的設置 – Packy

0
votes
answers
13 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
15 views
+10

在for循環中過濾數組引發警告VueJS

-1

我不確定這是一個問題還是我做錯了什麼。使用VueJS,我有一個v-for內的過濾功能,並且工作正常,但它在控制檯中引發了一個警告,this是這個問題的一個最簡單的例子。你可以看到,我需要過濾來自不同數組的關係數據,因此函數getClan()返回一個數組,所以我需要使用第一個元素的數據。到目前爲止好,但是當V-for循環結束我得到了這樣的警告:在for循環中過濾數組引發警告VueJS

[Vue warn]: Error in render function: "TypeError: this.clans.filter(...)[0] is undefined"  

顯示Chrome和Firefox的控制檯上的消息,由於某種原因沒有codepen的本地控制檯上顯示,我猜這在某種程度上與警告分離。

該警告僅在for循環結束時發生,並且在嘗試使用大量數據時會發生同樣的情況。

考慮使用計算屬性,但不能在這些參數上傳遞參數。

+0

以供將來參考,請提問自成體系,而不是取決於外部服務,如codepen或的jsfiddle(SO的片段工具做的一切他們這樣做,它確保問題不會因爲鏈接腐爛而變得不可用) –

+0

好的,感謝您的建議,我想這是懶惰的,但您是對的,代碼不長,並且會提高問題的可讀性。 – deadPoet

沙发
0
1

當您的數組篩選器不匹配任何內容時會出現問題:您嘗試訪問返回的值的第一個索引,該索引不存在。

你需要進行檢查,看是否有結果,而不是:

getClan(x) { 
    var clan = this.clans.filter(clan=>clan.id==x) 
    if (clan.length > 0) { 
     return clan[0].name 
    } else { 
     return "Peasant" 
    } 
} 
+0

謝謝,這個很明顯。只需要做一點改動,因爲即使過濾器只有一個項目將條件改爲clan.length> 0並且可以工作,過濾器也會返回一個數組。 – deadPoet

+0

@deadPoet哦,很好;我刪除了答案的錯誤部分,謝謝! –

+0

沒問題,我認爲問題是v-for指令中的過濾器調用,當它到達最後一個元素時,getClan(x)仍然得到一個空參數,這就是警告的原因,所以這應該解決問題, 再次感謝。 – deadPoet

0
votes
answers
16 views
+10

0

0

我很新vue.js.在我的本地主機,它工作正常,但是當我上傳到主機,它給了我w4.js?v=2:115中的錯誤Uncaught SyntaxError: Unexpected string w4.js是app.js,我從webpack.mix.js更改它。vue.js意外的字符串... Component.options)'+'}

而且這w4.js線115

if(!module.hot.data){ 
hotAPI.createRecord("data-v-0ffd8218",Component.options) 
}else{ 
hotAPI.reload("data-v-0ffd8218",Component.options)' + ' 
} 

所以,我刪除的行錯誤的所有' + '代碼。我的問題解決了。但我仍然不知道爲什麼我的代碼在localhost中無法正常工作?

當我更改vue中的某些部件時,它將生成新的w4.js,我應該再次刪除該錯誤行。

這是我app.js

import swal from 'sweetalert' 
require('./bootstrap'); 

window.Vue = require('vue'); 

Vue.component('example', require('./components/Example.vue')); 
Vue.component('groups', require('./components/Groups.vue')); 
Vue.component('group', require('./components/Group.vue')); 
Vue.component('test', require('./components/Test.vue')); 
Vue.component('pages', require('./components/Pages.vue')); 
Vue.component('page', require('./components/Page.vue')); 

const groups = new Vue({ 
    el: '#groups', 
}); 


const pages = new Vue({ 
    el: '#pages', 
}); 
沙发
0
0

你看看如何在服務器上運行HMR(熱模塊重裝)?

https://github.com/webpack/docs/issues/45

+0

謝謝你的回答。爲什麼我應該在服務器上運行HMR?我可以在本地建立並上傳到服務器嗎? – kresek

0
votes
answers
27 views
+10

使用vue項目部署到github頁面的問題

1

我想部署一個vue-cli項目到github頁面,我按照本網站上的說明和github支持。使用vue項目部署到github頁面的問題

delpoy VUE-CLI到github上的網頁: https://medium.com/@mwolfhoffman/deploying-to-github-pages-with-vue-webpack-cli-5b2ba17f14a0

配置的github頁 https://help.github.com/articles/configuring-a-publishing-source-for-github-pages/

設置 - >源 - >主/文檔

在根目錄的/ docs文件夾的存儲庫

不遵循存儲庫命名方案username.github.io或orgn ame.github.io

這裏是我的倉庫:https://github.com/leewei05/blog

但結果一直給我404,仍然不知道我的問題,請大家幫忙!

沙发
0
0

原來,我已經得到了錯誤的配置路徑,這裏是部署一個新VUE-CLI項目的Git樞紐頁中的步驟。

(你得安裝NPM和VUE-CLI第一)

  1. $ VUE的init的WebPack [項目]
  2. $ CD [項目]
  3. $ NPM安裝
  4. 去你的配置/index.js文件
  5. 修改構建部分是這樣的:

    build: { index: path.resolve(__dirname, '../docs/index.html'), assetsRoot: path.resolve(__dirname, '../docs'), assetsSubDirectory: 'static', assetsPublicPath: '', productionSourceMap: true, devtool: '#source-map', productionGzip: false, productionGzipExtensions: ['js', 'css'], bundleAnalyzerReport: process.env.npm_config_report }

  6. $ NPM運行建立

  7. 推到您的GitHub庫
  8. 去設定在你的倉庫
  9. 找到你的GitHub的網頁部分,然後從 「主」更改源 - >「主/ docs'
  10. 您的頁面應該位於'https://[userName].github.io/[repositoryName]/#/'
  11. 祝您好運!
0
votes
answers
33 views
+10

爲AJAX加載創建全局變量

1

我的應用程序中有很多AJAX請求,我想爲每個請求顯示加載圖標,並在收到響應時將其刪除。我爲這些調用使用axios,所以我創建了一個簡單的插件類並添加了定製的axios攔截器。爲AJAX加載創建全局變量

const MyGlobalVariables= { 
    install(Vue, options) { 

    Vue.load_mask = true; 

    MyGlobalVariables.getLoadMask = function() { 
     return Vue.load_mask; 
    }, 

    MyGlobalVariables.setLoadMask = function(val) { 
     Vue.load_mask = val; 
    } 

    } 
}; 
export default MyGlobalVariables; 

然後攔截

// Add a request interceptor 
window.axios.interceptors.request.use(function (config) { 

    // Do something before request is sent 
    MyGlobalVariables.setLoadMask(true); 
    console.log(MyGlobalVariables.getLoadMask()); 

    return config; 
}, function (error) { 
    MyGlobalVariables.setLoadMask(false); 

    console.log(MyGlobalVariables.getLoadMask()); 
    // Do something with request error 
    return Promise.reject(error); 
}); 

// Add a response interceptor 
window.axios.interceptors.response.use(function (response) { 

    // control the load mask on AJAX calls 
    MyGlobalVariables.setLoadMask(false); 
    console.log(MyGlobalVariables.getLoadMask()); 
    return response; 

}, function (error) { 

    MyGlobalVariables.setLoadMask(false); 
    console.log(MyGlobalVariables.getLoadMask()); 
    // Do something with response error 
    return Promise.reject(error); 
}); 

所以這部分工作正常。我的全局變量在適當的時候切換爲真/假。我遇到的困難是如何在我的主模板上設置一個實際切換它的變量?

在我的例子中,我有一個inline-template,它是我整個項目的根。

<home :user="user" inline-template> 
    // Bunch of content here 

    <div v-if="shouldShowLoadMask" class='lmask'></div> 
</home> 

然後在我的home.js文件:

import MyGlobalVariables from "./extras/my-global"; 

Vue.component('home', { 
    props: ['user'], 

    computed: { 
    shouldShowLoadMask() { 
     console.log('show load mask? ' + MyGlobalVariables.getLoadMask()); 
     return MyGlobalVariables.getLoadMask(); 
    }, 
    } 

的問題是shouldShowLoadMask僅在應用程序開始時觸發一次。所以我需要在插件變量watch(或類似的東西)。但是如何?我看到有人引用了Vuex,但我沒有在我的應用中使用它。

TL; DR:如何監視全局插件變量,以便我可以使用v-if開啓和關閉元素?

+1

這是一個恥辱,你沒有使用Vuex。我發現它非常適合在我的應用程序中處理狀態,並將其廣泛用作API調用和表示組件之間的緩衝區。 – Phil

+0

您應該嘗試重構Vuex,因爲這會爲您節省像這樣的麻煩。 –

+0

問題是應用程序建立在spark之上,不使用Vuex。而這一切都完成了。除此之外,所有事情都應該如此。 如果這是控制它的唯一方法,我會尋找另一種解決方案。我討厭將Vuex包含在這一件小事中。 – Nathan

沙发
0
0

製作反應性全局變量的超級簡單方法就是使用Vue。這裏的理念是:

const global = new Vue({data:{loading: false}}) 

const GlobalPlugin = { 
    install(Vue){ 
    Vue.prototype.$global = global 
    } 
} 

然後你可以使用它在Vue公司,像這樣:

console.clear() 
 

 
// set up the reactive global object 
 
const global = new Vue({data:{loading: false}}) 
 

 
// make a plugin to add it to Vue 
 
const GlobalPlugin = { 
 
    install(Vue){ 
 
    Vue.prototype.$global = global 
 
    } 
 
} 
 

 
Vue.use(GlobalPlugin) 
 

 
// Set up a faux change to the global loading property 
 
setInterval(() => global.loading = !global.loading, 2000) 
 

 
// Reactivity! 
 
Vue.component("some-component", { 
 
    template:` 
 
    <div> 
 
     <h2> Some component </h2> 
 
     Loading: {{$global.loading}} 
 
    </div> 
 
    ` 
 
}) 
 

 
new Vue({ 
 
    el: "#app", 
 
    computed:{ 
 
    loading() { 
 
     return this.$global.loading 
 
    } 
 
    } 
 
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.11/vue.min.js"></script> 
 
<div id="app"> 
 
    <h2>Root Vue</h2> 
 
    Loading: {{loading}} 
 
    <some-component></some-component> 
 
</div>

顯然,你需要做一些工作在你的應用程序,但是這是一個的核心非常簡單的反應性全局對象

0
votes
answers
39 views
+10

laravel 5.5 not loading jquery/vuejs

4

我剛剛安裝了laravel 5.5。我打算使用VueJS,但每次加載頁面時,我的VueJS都無法工作。 Probaly因爲jquery沒有加載的事實。laravel 5.5 not loading jquery/vuejs

我也使用twitter bootstrap,它也沒有被加載。只有sass文件被加載。如果我使用CDN作爲jquery和bootstrap,它們工作正常。但仍然VueJS不工作。

我有npm啓動和運行,編譯時(npm run watch或npm run dev)我沒有收到任何錯誤。

我app.js負載:

require('./bootstrap'); 
window.Vue = require('vue'); 

如果我嘗試CONSOLE.LOG在什麼是真的很奇怪這個文件時,它也沒有顯示任何在我的控制檯東西。

在我bootstrap.js也有以下兩行:

window.$ = window.jQuery = require('jquery'); 
require('bootstrap-sass'); 

在我的控制檯我只看到下面的警告,我認爲來自一個插件我使用(Ghostery的)。

loading pref showConsoleLogs before prefs were initialised, you will not get the correct result 

我也看到了人們對以下工作(他們把這種在他們的WebPack混合)誰:

mix.autoload({ 
    jquery: ['$', 'window.jQuery',"jQuery","window.$","jquery","window.jquery"] 
}); 

如果我下面的代碼添加到app.js它也沒有顯示,但它是加載的文件:

$(document).ready(function(){ 
    console.log('test'); 
}); 

UPDATE

仍然沒有反應回到這個線程,但我到目前爲止發現了什麼: - 我放在我的公共/ js/app.js中的任何內容都沒有加載。當我加載頁面時,我看到加載了js文件。我可以查看內容和我的內容,但它不起作用。 - 我已經通過CDN加載jQuery的,因爲我無法獲得應通過bootstrap.js

解決方案包括在我的app.js正常的jQuery:BACK將舊版本的LARAVEL

+0

你運行過'npm install && npm run dev'嗎? – usrNotFound

+0

是的,我確實運行了這兩個 – user3398922

沙发
0
0

運行npm install && npm run dev後,爲確保這不是您的瀏覽器緩存先前渲染代碼的問題,請嘗試運行php artisan serve。點擊鏈接,如果您能夠看到您期望的內容,這意味着您的瀏覽器正在緩存呈現的app.js文件。在這種情況下,請轉到瀏覽器工具,清除其緩存,然後刷新頁面。您也可以在隱身窗口中打開該頁面。

0
votes
answers
12 views
+10

不容通過JSON加載的圖像的「SRC」(Vue.js)

-3

不容通過JSON加載的圖像的「SRC」(Vue.js)

var topArticle=new Vue({ 
 
    el:'#toparticle', 
 
    data:{topmostArticle:null}, 
 
    created: function(){ 
 
       fetch('topnews.json') 
 
       .then(r=>r.json()) 
 
       .then(res=>{this.topmostArticle=$.grep(res,function(e){return e.topnews!==" "}); 
 
       console.log(this.topmostArticle); 
 
       }); 
 
      } 
 
     });
<!DOCTYPE html> 
 
<html lang="en"> 
 
    <head> 
 
    <meta charset="utf-8"> 
 
    <title>The greatest news app ever</title> 
 
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/foundation/6.3.1/css/foundation.min.css"> 
 
    <script src="https://cdn.jsdelivr.net/npm/vue"></script> 
 
    <script src="https://code.jquery.com/jquery-1.10.2.js"></script> 
 
    </head> 
 
    <body> 
 

 
    <div id ="toparticle"> 
 
     <img src="{{topmostArticle[0].topnews[0].img}}"> 
 
     <img src="2.jpg"> 
 
     "{{topmostArticle[0].topnews[0].img}}" 
 
    </div> 
 

 
    <script src="main.js"></script> 
 

 
    </body> 
 
</html>

我試圖與外部文件來加載的圖像的源,但我面對一些問題...在圖像標籤中無法識別源代碼。該代碼應該是正確的,因爲當數據加載到圖像標籤之外時,它很好用。任何人有任何想法?非常感謝!

第一個圖像沒有加載(因爲src是通過json傳輸的),第二個圖像沒問題,第三個命令「{{topmostArticle [0] .topnews [0] .img}}」返回「2 .JPG」,所以這是確定

JSON

  [{"topnews":[ 
       {"timestamp":"0", 
       "id":"2", 
       "cathegory":"2", 
       "headline":"2", 
       "text":"2", 
       "img":"2.jpg", 
       "url":"2.jpg", 
       "author":"2", 
       "comments":"2" 
       }, 
       {"timestamp":"0", 
       "id":"2", 
       "cathegory":"3", 
       "headline":"3", 
       "text":"3", 
       "img":"3", 
       "url":"3", 
       "author":"3", 
       "comments":"3" 
       } 
       ]}] 

的問題是,爲什麼我無法通過JSON直接加載在src? 請點擊下面的鏈接(網站視圖)以獲得更多的清晰度!

??
+2

什麼語言是什麼?請將相關代碼添加到您的問題中,這很難調試圖像。 – Teemu

+0

它是在HTML和JavaScript ...你可以請複製4個圖像的URL在你的browswer?....我發佈了一些錯誤,但發佈 –

+0

不,你可以編輯的問題。只需將相關代碼複製粘貼到帖子中,然後選擇粘貼的代碼並單擊編輯器工具上的「{}」圖標即可。 – Teemu

沙发
0
0

嘗試改變,綁定屬性的方式:

<img :src="topmostArticle[0].topnews[0].img"> 
+0

這是一個排版錯誤...它仍然沒有工作... –

+0

如果右鍵單擊破碎的形象,並在瀏覽器中檢查,什麼顯示爲src屬性? –

+0

並懸停:「無法加載圖像」 –

0
votes
answers
19 views
+10

手錶不能正常工作

0

這裏的問題很簡單ilustrate,我在父組件上執行一個方法,它改變我的對象products(也屬於父data)屬性的值,這是工作精細。手錶不能正常工作

,但我通過這個對象爲道具,以一個子組件,看它深深< - 這是失敗的,因爲你可以看到alert('changed');永遠不會執行:

Vue.component('child', { 
 
	 props: ['prods'], 
 
    watch: { 
 
    	 prods: { 
 
    	 handler: function(new_val, old_val) { 
 
     	 alert('watched'); 
 
     }, 
 
     deep: true 
 
    } 
 
    } 
 
}) 
 

 
new Vue({ 
 
    el: '#app', 
 
    template: '<div>{{products[0].value}}<br><button v-on:click="incre">increment prod 0</button></div>', 
 
    data: { 
 
    	 products: [ 
 
    	 {id: 1, name: 'prod1', value: 20}, 
 
     {id: 2, name: 'prod2', value: 40}, 
 
    ], 
 
    }, 
 
    methods: { 
 
    incre: function() { 
 
     this.products[0].value += 20; 
 
    } 
 
    } 
 
})
<script src="https://unpkg.com/[email protected]/dist/vue.js"></script> 
 
<div id="app"> 
 
    <child v-bind:prods="products"></child> 
 
</div> 
 
https://jsfiddle.net/dmbgmxzh/6/

(更新):
這個工程:https://jsfiddle.net/dmbgmxzh/5/
這並不:https://jsfiddle.net/dmbgmxzh/6/
這很奇怪......

+0

不幸的是,它按預期工作。數組不需要'deep:true'。 – WaldemarIce

沙发
0
2

作爲一種替代方法,您可以將產品作爲道具傳遞給您的孩子組件,分別監控每個產品。就像這樣:

Vue.component('child', { 
 
    props: ['product'], 
 
    watch: { 
 
     product: { 
 
      handler: function (new_val, old_val) { 
 
       alert('watched'); 
 
      }, 
 
      deep: true 
 
     } 
 
    } 
 
}) 
 
new Vue({ 
 
    el: '#app', 
 
    data: { 
 
     products: [ 
 
      { 
 
       id: 1, 
 
       name: 'prod1', 
 
       value: 20 
 
      }, 
 
      { 
 
       id: 2, 
 
       name: 'prod2', 
 
       value: 40 
 
      }, 
 
    ], 
 
    }, 
 
    methods: { 
 
     incre: function() { 
 
      this.products[0].value += 20; 
 
     } 
 
    } 
 
})
<script src="https://unpkg.com/[email protected]/dist/vue.js"></script> 
 
<div id="app"> 
 
    <div>{{products[0].value}}<br><button v-on:click="incre">increment prod 0</button></div> 
 
    <child :product="product" v-for="product in products"></child> 
 
</div>

this post也。

+0

謝謝,但我不想有幾個'孩子',這個項目上的孩子是谷歌地圖,我只是改變它裏面的標記的經度/緯度(在這種情況下,'產品'對象) –

+0

然後只傳遞''而不是,它應該可以工作 –

+0

這種方式很愚蠢:https://jsfiddle.net/dmbgmxzh/5/。 Bur不是這樣工作的:https://jsfiddle.net/dmbgmxzh/6/ –