var routes = { ["/"]: { first: ["cards", "categories"], // , , "/" routComponent: "cards", // templatePath: "/router/template/card.html" // "" }, ["/categories/category*"]: { // * - /categories/category(num) - , first: ["cards", "categories"], routComponent: "cards", templatePath: "/router/template/card.html" }, ["/cards/card*"]: { first: ["cardsingle", "categories"], routComponent: "cardsingle", templatePath: "/router/template/cards.html" }, }
/* ( ), , , , , */ var State = {// categories: {// - c container: 'categori',// ( ) props: [/* */], methods: { // }, }, cards:{// - - container: 'card',// arrayProps: [/* cards ( div )*/], arrayMethods: { // }, props: [/* ( ) 'card' */], methods: { /// 'card' } }, cardsingle: {// - - container: 'cardsingle',// , .. props: [/* */], methods: { // }, }, variants1: {//- cardsingle "render" container: "variant1", // props: [/**/], methods: { }, } },/// - - variants2: { {// container: "variants2", props: [], methods: { }, }, }, variants3: { // container: "variant3", props: [], methods: { } }, }, // , /* this.emiter.prop, - this.rootLink.eventProps["emiter- "] getEventProp() setEventProp( )*/ eventEmiters: { ["emiter-single-id"]: {// id cardsingle prop: "0" }, ["emiter-fetch-posts"]: {/// prop: "", }, ["emiter-click-category"]: {/// prop: 0, }, ["emiter-chose-variant"]: {/// prop: "", }, }, stateMethods: { fetchPosts: function(nameFile, callb){ /// json nameFile callb . }, },
-var categori_rout = "/categories/"; -var category_name = ["category1", "category2", "category3", "category4"] | ul(data-categories="array") each val, index in category_name li(data-categori="container" data-categori-clickcategory="click") a(href=categori_rout+category_name[index] class=index==category_id? "hover-category" : '' data-categori-listenclick="emiter-click-category" data-categori-categoryclass="class" data-categori-category_href="href")= category_name[index] <!-- Html --> <ul data-categories="array"><!-- --> <li data-categori="container" data-categori-clickcategory="click"><!-- â„–1 --> <a data-categori-listenclick="emiter-click-category" data-categori-categoryclass="class" data-categori-category_href="href" class="hover-category" href="/htmlix_examples/router/category/category1.html">category1</a> </li><--"hover-category" --> <li data-categori="container" data-categori-clickcategory="click"><!-- â„–2 --> <a data-categori-listenclick="emiter-click-category" data-categori-categoryclass="class" data-categori-category_href="href" href="/htmlix_examples/router/category/category2.html">category2</a> </li> <li data-categori="container" data-categori-clickcategory="click"><!-- â„–3 --> <a data-categori-listenclick="emiter-click-category" data-categori-categoryclass="class" data-categori-category_href="href" href="/htmlix_examples/router/category/category3.html">category3</a> </li> <li data-categori="container" data-categori-clickcategory="click"> <!-- â„–4 --> <a data-categori-listenclick="emiter-click-category" data-categori-categoryclass="class" data-categori-category_href="href" href="/htmlix_examples/router/category/category4.html">category4</a> </li> </ul><!-- categories -->
categories: {// container: 'categori', // props: ["clickcategory", "listenclick", "categoryclass", "category_href"], // methods: {// clickcategory: function(event){// event.preventDefault(); // var href = this.parentContainer.props.category_href.getProp(); /// category_href /// , this.rootLink.router.setRout(href); // - category_href, ( ) var nameFile= href.split("/").slice(-1)[0]; // href /// eventProp (this) fetchPosts var eventProp = this.rootLink.eventProps["emiter-fetch-posts"]; // , , "emiter-fetch-posts" cards listenfetch cards this.rootLink.stateMethods.fetchPosts( nameFile, function(jsonData){ eventProp.setEventProp(jsonData) } ); // "emiter-click-category" id listenclick - this.rootLink.eventProps["emiter-click-category"].setEventProp(this.parentContainer.id) }, listenclick: function(){// "hover-category" (), // "emiter-click-category" id "hover-category" if(this.parentContainer.id == this.emiter.prop){ this.parentContainer.props.categoryclass.setProp("hover-category"); }else{ this.parentContainer.props.categoryclass.removeProp("hover-category"); } } }, },
<div class=" row" data-cards="array" data-cards-listenfetch="emiter-fetch-posts" data-cards-listenrout="emiter-router"><!-- - cards --> <div data-card="container" class="col-4 card-in"><!-- --> <h5 data-card-title="text"> 1</h5> <a data-card-click="click" data-card-href="href" href="/cards/card?id=0"> <img data-card-srcimg="src" src="../../img/images.jpg" /> </a> <p data-card-paragraf="text"> 1</p> </div><!-- --> </div>
cards:{ container: 'card', arrayProps: ["listenfetch"], arrayMethods: { listenfetch: function(){// ["emiter-fetch-posts"] var newArray = this.emiter.prop; this.rootLink.clearContainer(this.pathToContainer); for(var i =0; i< newArray.length; i++){ /// var container = this.rootLink.createContainerInArr(this.pathToContainer, { title: newArray[i].title, paragraf: newArray[i].paragraf_short, href: newArray[i].href, srcimg: newArray[i].srcimg }); } this.rootLink.stateProperties.cards = newArray; /// }// listenfetch }, props: ['title','paragraf',"click", 'srcimg', "href"], // methods: { click: function(event){// href , id this.rootLink.router.setRout ( ), event.preventDefault(); var href = this.parentContainer.props.href.getProp(); var cardId = href.split("?")[1].split("=")[1]; var oldHref = window.location.href; this.rootLink.router.setRout(href, this.rootLink.state["cardsingle"]); /// cardsingle this.rootLink.eventProps["emiter-single-id"].setEventProp([cardId, oldHref]); } } },
<div data-cardsingle="container" data-cardsingle-listenid="emiter-single-id" class="card-single"> <div class="row"> <div class="col-7 card-left-column"> <h5 data-cardsingle-title="text"></h5> <img data-cardsingle-srcimg="src" src="../../img/Thul_300x300.png"/> <p data-cardsingle-paragraf="text"> </p> <p >: <span data-cardsingle-category="text"> category 1 </span> </p> <a data-cardsingle-clickback="click" data-cardsingle-href_back="href" href="/"> < </a> </div> <div class="col-5 right-columt"> <div data-cardsingle-render="render-variant"> <!--- --> </div> <p > : <span data-cardsingle-listenchosevariant="emiter-chose-variant" data-cardsingle-chosetext="text" style="color: red;"> <span> </p> </div> </div><!--row --> </div>
cardsingle: {// container: 'cardsingle', // props: ["render", "category", "title","srcimg", "paragraf", "href_back", "clickback", "listenid", "listenchosevariant","listenvariant", "chosetext"],// methods: { clickback: function(event){// event.preventDefault(); var href = this.parentContainer.props.href_back.getProp(); this.rootLink.router.setRout(href); }, listenchosevariant: function(){/// "emiter-chose-variant" this.parentContainer.props.chosetext.setProp(this.emiter.prop); }, listenid: function(){// "emiter-single-id" var id = this.emiter.prop[0];/// id var href = this.emiter.prop[1]; var cards = this.rootLink.stateProperties.cards; this.parentContainer.props.title.setProp(cards[id].title); this.parentContainer.props.paragraf.setProp(cards[id].paragraf); this.parentContainer.props.href_back.setProp(href); this.parentContainer.props.srcimg.setProp(cards[id].srcimg); this.parentContainer.props.category.setProp(cards[id].category); this.parentContainer.props.chosetext.setProp(""); // - , if(this.rootLink.state[cards[id].variant_template].type== "array"){ this.rootLink.clearContainer(cards[id].variant_template);/// for(var i =0; i< cards[id].variants.length; i++){ this.rootLink.createContainerInArr(cards[id].variant_template, { text: cards[id].variants[i], }); } /// this.parentContainer.props.render.setProp(cards[id].variant_template); } },
<ul data-variants1="array"><!-- --> <li data-variant1="container" data-variant1-clickvariant="click" ><!-- --> <a data-variant1-text="text" href="/"> â„–1</a> </li> </ul> <form data-variants2="container"><!-- --> <div class="form-group"> <label for="exampleFormControlSelect1"> :</label> <select data-variants2-clickvariant2="click" data-variants2-select="select" class="form-control" id="exampleFormControlSelect1"> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select> </div> </form> <form data-variants3="array"><!-- --> <div data-variant3="container" class="form-check"><!-- --> <input data-variant3-clickvariant="click" class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1" value="option1" checked> <label data-variant3-text="text" class="form-check-label" for="exampleRadios1"> 1 </label> </div> </form>
variants1: { container: "variant1", props: ["clickvariant", "text"], methods: { clickvariant: function(event){ event.preventDefault(); /* "emiter-chose-variant" listenchosevariant cardsingle */ this.rootLink.eventProps["emiter-chose-variant"].setEventProp(this.parentContainer.props.text.getProp()); }, } }, variants2: { container: "variants2", props: ["clickvariant2", "select"], methods: { clickvariant2: function(event){ event.preventDefault(); this.rootLink.eventProps["emiter-chose-variant"].setEventProp(this.parentContainer.props.select.getProp()); }, }, }, variants3: { container: "variant3", props: ["clickvariant", "text"], methods: { clickvariant: function(event){ this.rootLink.eventProps["emiter-chose-variant"].setEventProp(this.parentContainer.props.text.getProp()); } }, },
Source: https://habr.com/ru/post/458210/
All Articles