В родительском компоненте, дочерние компонент отдельных данных не имеют, данные, как часть родительсикх данных, например, какого-то поля booksList.
И как это должно выглядить в коде, чтобы данные оставались связанными?
<template>
<lib-category v-model="booksList"></lib-category>
</template>
<script>
import libCategory from "./libCategory.vue"
default export {
//...
components: {libCategory},
data() {
return {
booksList: [],
}
}
//...
}
</script>
<template>
<div v-for="(category, i) in booksListInner" :key="'i' + i">
<!-- тут какое-то оформление категории -->
...
<!-- а тут перечисляем книги, в нее входящие -->
<lib-book v-for="(book, k) in category.children" :key="'k' + k" v-model="book"></lib-book>
</div>
</template>
<script>
import libBook from "./libBook.vue"
default export {
//...
props: ['value'],
components: {libBook},
data() {
return {
booksListInner: [],
}
},
watch: {
value: {
handler (value) { //связанность снаружи внутрь
this.booksListInner = value
},
immediate: true,
deep: true, //необходимо для объекта с вложенностью
},
booksListInner: {
handler (booksListInner) { //связанность изнутри наружу
this.$emit("input", booksListInner)
},
deep: true, //необходимо для объекта с вложенностью
}
}
}
</script>
const allElements = document.querySelectorAll('.elements__item');
const allPrice = '.elements__item-title_cost';
const elementsContainer = document.querySelector('.elements__list');
//функция по сортировке
function sortCard(elements, type) {
let sortingObj = {};
elements.forEach((element, index) => {
const elementValue = parseInt(element.querySelector(type).textContent.replace('руб.', '').replace(/\s+/g, ''));
sortingObj[elementValue] = {'element': element, 'index': index};
});
const keys = Object.keys(sortingObj);
function numberSort(a, b) {
a = parseInt(a);
b = parseInt(b);
if (a < b) return -1;
if (a > b) return 1;
}
keys.sort(numberSort);
keys.map(function(key, index){
elementsContainer.insertAdjacentElement('beforeend', sortingObj[key]['element']);
});
}
document.querySelector('#cost-button').addEventListener("click", function() {
sortCard(allElements, allPrice);
})
.form-check-other {
position: relative;
}
.form-check-other .form-check-label{
position: absolute!important;
left: 0;
}
<template>
<component :is="'auth-layout'">
<!-- ... Vue-разметка для SignIn или SignUp ... -->
</component>
</template>
<script>
import AuthLayout from "@/layouts/AuthLayout";
export default {
components: {
AuthLayout
}
//... код для SignIn или SignUp
}
</script>
<template>
<div class="auth">
<slot><!-- здесь отобразятся странички SignIn и SignUp --></slot>
</div>
</template>
namespace app\helpers;
class StringHelper
{
public static function truncate($string)
{
//...
}
public static function capitalize($string)
{
//...
}
}
namespace app\helpers\string;
function truncate($string)
{
//...
}
function capitalize($string)
{
//...
}
\app\helpers\StringHelper::truncate($string);
\app\helpers\string\truncate($string);
Как правильно организовать нахождение классов с API в структуре проекта (MVC)? Они хранятся вместе с моделями? Или нужно создавать отдельную папку в папке APP (Или вне ее?)?
- /App
| - /Models
| | - Article.php
| | - Category.php
| - /Controllers
| | - Articles.php
| | - Categories.php
| - /views
| | - /articles
| | | - articles_list.php
| | | - article_page.php
| | - /categories
| | | - my_categories.php
| | | - categories_list.php
| | | - article_page.php
допускается делать методы внутри Модели\контроллера?
Просто показать на собесе, что я умею пользоваться функцией json_encode()
<?php
$datejs = [];
//...
$datejs[] = [$YY, $MM, $DD];
//...
echo json_encode($datejs);
echo '<script type="text\javascript">';
echo 'var disabled = ';
echo json_encode($datejs);
echo ';' . "\n"
echo '</script>';
<?php
$files = glob('*.txt'); //получаем список имен файлов
$idx = rand(0, sizeof($files)-1); //генерируем случайный номер в списке
$file = $files[$idx]; //получаем по этому номеру имя файла
echo file_get_contents($file); //выводим его содержимое
unlink($file); //и удаляем.
?>
# Если кнопка "Yes" нажата
if( isset( $_POST['btn_yes'] ))
{
//Здесь должно происходить что-то типа
echo '<div class="vacancy remove">';
} else {
echo '<div class="vacancy">';
}
$this->fullname = $request->request->get('fullname', '');
jQuery(function($) { //так в jQuery создается обработчик события DOMReady
//И уже после того, как страница полностью готова, выполняем код:
//Получаем value текущей активной радиокнопки. В этом помогает псевдокласс :checked
let radioValue = $('input[name="radio"]:checked').val();
//делаем с ним что хотим
//....
//остальной код
$('input[name="radio"]').click(function(){
var target = $('#block-' + $(this).val());
$('.block-text').not(target).hide(0);
target.fadeIn();
});
});
.nav-head:hover ~ .nav-submenu {
display: block
}
.nav-item:hover .nav-submenu {
display: block
}