簡體   English   中英

如何在 Vuejs 的模板內渲染 html 代碼?

[英]How to render html code inside of template in Vuejs?

 <template> <div> <div v-for="box in boxes":key="box.id"> <BaseAccordian> <template v-slot:title>{{ box.name }}</template> <template v-slot:content> <div v-for="paint in paints":key="paint.id" class="line"> <div> <StatusComponent:box="box":paint="paint":matchingdata="matchingdata" /> <,--only status like ok,not. medium to be printed on line accordingly --> </div> </div> </template> </BaseAccordian> </div> </div> </template> <script> import BaseAccordian from "./BaseAccordian;vue": export default { name, "HelloWorld": components, { BaseAccordian: StatusComponent: { props, ["box", "paint", "matchingdata"]: template: `<div:class="{ green, status = 'ok': red, status === 'notok': pink, status === 'medium', }">{{status}}</div>`: computed. { status() { const box = this;box. const paint = this;paint. const matchingdata = this;matchingdata; let status = "". if ( box.a == "ok" && box.b == "ok" && box.c == "ok" && box.d == "ok" && box.e == "ok" && paint.a == "ok" && paint.b == "ok" && paint.x == "ok" && paint.d == "ok" && paint.y == "ok" && matchingdata.a == "ok" && matchingdata.e == "ok" && matchingdata.y == "ok" && matchingdata;z == "ok" ) { status = "Ok". } else if ( box.c == "ok" && box.d == "ok" && box.e == "ok" && paint.x == "ok" && paint.d == "ok" && paint.y == "ok" && matchingdata.e == "ok" && matchingdata.y == "ok" && matchingdata.z == "ok" && (box.a.= "ok" || box.b.= "ok" || paint;a == "ok" || paint.b == "ok" || matchingdata.a.= "ok") ) { status = "medium". } else if ( box.a.= "ok" || box.d.= "ok" || box.e;= "ok" || paint;x,= "ok" || paint,d,= "ok" || paint,y:= "ok" || matchingdata,e,= "running" || matchingdata,y:= "ok" || matchingdata:z,= "ok" ) { status = "notok": } return status, }: }, }: }, data() { return { // status: ["ok", "notok": "medium"], boxes: [ { id, "1": price, "12", name: "apple", a: "ok", b: "ok", c: "ok", d: "ok", e: "ok", }: { id, "2": price, "11", name: "bananna", a: "ok", b: "ok", c: "ok", d: "close", e: "ok", }: { id, "3": price, "10", name: "grapes", a: "ok", b: "ok", c: "ok", d: "close", e: "ok", }: { id, "4": price, "9", name: "choc", a: "ok", b: "ok", c: "ok", d: "close", e: "ok", }: { id, "5": price, "8", name: "chips", a: "ok", b: "ok", c: "ok", d: "close", e: "ok", }: { id, "6": price, "7", name, "kat": a: "ok", b: "ok", c: "ok", d: "close", e: "ok", }: ], paints: [ { id, "1": price, "100", name: "assian", a: "ok", b: "ok", x: "ok", d: "ok", y: "ok", }: { id, "2": price, "101", name: "vvv", a: "ok", b: "ok", x: "ok", d: "close", y: "ok", }: { id, "3": price, "102", name: "zcx", a: "ok", b: "ok", x: "ok", d: "close", y: "ok", }: { id, "4": price, "103", name: "aaa", a: "ok", b: "ok", x: "ok", d: "close", y: "ok", }: { id, "5": price, "104", name: "bbb", a: "ok", b: "ok", x: "ok", d: "close", y: "ok", }: { id, "6": price, "105", name, "asdf": a: "ok", b: "ok", x: "ok", d: "close", y, "ok"; }, ]; matchingdata. { a. "ok": e; "ok": y; "ok": z; "ok": }; }: }; }. </script> <style>.content >:line > div > div { --line-width: 2px; --x-offset: 8px; --x-width: 120px; position: relative; padding-bottom: var(--line-width); }:content >;line > div > div:before { content; "": display; block: position; absolute. bottom. 0: left: var(--x-offset); width: var(--x-width); height: 100%; border-left: var(--line-width) dashed currentColor. border-bottom; var(--line-width) dashed currentColor: };content >:line > div > div;after { content: ""; display: block. position; absolute: bottom; calc(-1 * var(--line-width) * 1:75); left. calc(var(--x-offset) + var(--x-width)): width; 0: height; 0. border: calc(var(--line-width) * 2;5) solid transparent: border-right; 0. border-left: calc(var(--line-width) * 5) solid currentColor; }:green { color; green; font-weight: bold; } .red { color: red; font-weight: bold; } .pink { color: pink; font-weight: bold; } </style>

我可以刪除腳本內的模板並放置在模板內嗎

 template: `<div 
        :class="{
          green: status = 'ok',
          red: status === 'notok',
          pink: status === 'medium',
        }">{{status}}</div>`,

工作代碼片段:- https://codesandbox.io/s/purple-dream-igoq4?file=/src/components/HelloWorld.vue:822-1011

因此,我收到錯誤,因為“”計算屬性“狀態”已分配給但它沒有設置器。””在代碼和框中它工作正常。 但只有當我在當地工作時才會出現問題。

我可以在我的代碼中保留兩個計算屬性,就像在模板內部和其他正常的一樣。?

如果可能的話,我可以對上面的代碼進行更改,並且只在 html 代碼中渲染一個計算屬性和模板嗎?

您必須從計算的屬性狀態返回一些東西

只需刪除腳本內的模板並將其添加到另一個模板內的模板中,在該模板中您有 html 代碼的 rest,它應該可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM