Хобрук: Ваш путь к мастерству в программировании

Доступ к одному значению с использованием цикла foreach в представлении, исходящем из модели представления в Durandal

У меня есть название проекта, я хочу сделать, когда я нажимаю на заголовок, отображаются все связанные действия, у меня есть API, который приносит все связанные действия, API разработан в рамках YII, API называется в модели представления, и все действия доступны в представлении через цикл foreach, я хочу отображать одно действие за раз, в тот момент, когда я нажимаю на название проекта, отображаются все действия, я хочу, чтобы одно действие выполнялось отображаться при однократном нажатии. Пожалуйста, если кто-то может ответить.

это моя модель представления...

 function fetchProjectActivities() {
     var self = this;
     // this.current_activities.length=0;
     dataservice.projectactivities(self.id()).then(function (data) {
         //self.current_activities().clear();
         for (x in data) {
             self.current_activities.push(new Activity(data[x].activity.id, data[x].user_id, data[x].user.first_name, data[x].user.last_name, data[x].activity.message, new Date(data[x].create_date), data[x].time_spent, data[x].tags, null, data[x].activity.status,
             self.name()));
         }
         console.log("aaa" + self);
     });
 }

а это мой взгляд...

<div class="grid-item project-item clearfix">
    <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12"><h3>
        <div data-bind="foreach:projects">
            <div data-bind="foreach: current_activities">
               <span data-bind="text: title()"></span>
            </div>
        </div>
    </div>
</div>

и вот функция, которая вызывается, когда я нажимаю на заголовок Projects.

Название проекта: <a data-bind="click: $root.fetchProjectActivities"><span data-bind="text: name()">


Ответы:


1

Есть пара вещей, которые я вижу.

  1. в html есть мошеннический тег <h3>, который вызовет горе с Knockoutjs. которые нужно будет закрыть или удалить.

  2. цикл for в модели представления действительно должен быть for (var x in data) {...}, иначе вы получите x, объявленный как переменная в глобальной области.

Теперь, чтобы просмотреть действия проекта, вы фактически пролистываете массив current_activities по одному за раз. Вам нужно будет отслеживать текущую выбранную активность и способ продвижения вперед с каждым щелчком мыши и список всех действий.

поэтому вам понадобится модель представления пейджера. на сайте knockoutjs есть очень простой вариант, который вы можете использовать и модифицировать под свои нужды.

03.02.2015
  • Исправил обе вещи :( Не решил проблему 03.02.2015
  • можете ли вы добавить больше модели представления, поскольку то, что у вас есть в настоящее время, очень ограничено. в html выше вы ссылаетесь на проекты и current_activities. они не отображаются в модели представления 03.02.2015
  • Новые материалы

    Решения DBA Metrix
    DBA Metrix Solutions предоставляет удаленного администратора базы данных (DBA), который несет ответственность за внедрение, обслуживание, настройку, восстановление базы данных, а также другие..

    Начало работы с Блум
    Обзор и Codelab для генерации текста с помощью Bloom Оглавление Что такое Блум? Некоторые предостережения Настройка среды Скачивание предварительно обученного токенизатора и модели..

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...