Nano Hash - криптовалюты, майнинг, программирование

Angular отображает информацию о продукте в модальном режиме после нажатия большого пальца ng-repeat

Я только начал изучать angular! У меня есть кнопка «быстрый просмотр» в моем списке миниатюрных изображений продукта, кнопка и изображения генерируются с использованием angular ng-repeat. Мне нужно отобразить соответствующее описание/цену продукта и т. д. (из моего json-файла) в модальном режиме при нажатии на «быстрый просмотр», но я не могу ничего показать. Я хотел, возможно, отфильтровать продукты, используя их код продукта, так как он уникален для каждого элемента. Любая помощь приветствуется.

Мой HTML:

  <div ng-repeat="product in store.products">
    <div class="item col-md-3 col-xs-12">
        <div class="product-image-wrapper text-center">
            <div class="product">
                <div class="image">  
                    <div class="quickview">
                        <a title="Quick View" class="btn btn-xs  btn-quickview" data-target="#product-details-modal" data-toggle="modal" ng-click="selectedProduct = product"> Quick View </a>
                    </div><!--quickview-->
                    <a href="#"><product-image></product-image></a>
                </div><!--image-->
                <p><span class="red"><product-title></product-title></span><br>
                </p>
            </div><!--product-->
        </div><!--product-image-wrapper text-center-->
    </div><!--item col-md-3 col-xs-12-->
</div><!--ng repeat-->

× JS

(function() {
  var app = angular.module('store-products', []);

app.directive('productGallery', function($scope) {
  return {
    restrict: 'E',
    templateUrl: 'includes/product-gallery.html',
    scope: {
      product: '=',
    },
    controller: function() {
      this.current = 0;
      this.setCurrent = function(imageNumber) {
        this.current = imageNumber || 0;
      };
    },
    controllerAs: 'gallerymain'
  };
});

app.directive('productImage', function() {
  return {
    restrict: 'E',
    templateUrl: 'includes/product-image.html',
    controller: function() {
      this.current = 0;
      this.setCurrent = function(imageNumber) {
        this.current = imageNumber || 0;
      };
    },
    controllerAs: 'gallery'
  };
});

  app.directive('productTitle', function (){
    return {
      restrict:'E',
      templateUrl: 'includes/product-title.html'
      scope: {
        product: '=',
      },
    };
  });

  app.directive("productDescriptions", function() {
    return {
      restrict: 'E',
      templateUrl: "includes/product-description.html"
      scope: {
        product: '=',
      },
    };
  });

})();

JSON

[
  {
    "name": "Up in Flames",
    "description": "Covered in dragon scales, this rashguard has a full graphical back showing the flame surrounded dragon itself.",
    "price": 24.99,
    "code": "FLAME",
    "images": [
      "images/products/flames/front.jpg",
      "images/products/flames/back.jpg",
      "images/products/flames/close.jpg"
    ],
    "reviews": []
  },
]

Ответы:


1

Назначение, которое устанавливает выбранный продукт внутри вашего ng-repeat, фактически создает selectedProduct на дочерняя область. Так что, скорее всего, он недоступен для вашей модальной разметки. Этого можно избежать, назначив выбранный продукт свойству объекта:

ng-click="store.selected = product"

Я также заметил, что вы определили переменные изолированной области для продукта в своем определении директивы, но вы не передали продукт в , Это должно быть сделано с атрибутами в вашем html:

<product-image product="product"></product-image>

Вот рабочая демонстрация: http://plnkr.co/edit/WKLnEaE7uU85r1CXIWlg?p=preview< /а>

15.03.2015
  • Большое спасибо за вашу помощь. Я использовал вышеизложенное, но мне было интересно, как мне передать данные через мой файл JSON, я использовал приведенное ниже ранее, но, похоже, не могу вставить его сейчас? $http.get('store-products.json').success(function(data){ store.products = data; }); 22.03.2015
  • @wickedwicca, я думаю, твоя проблема была в том, что store.products должно быть $scope.store.products. Я обновил plunkr, чтобы продемонстрировать чтение продуктов из файла JSON. 23.03.2015
  • В очередной раз благодарим за помощь. Я все еще тащусь от этого. Моя последняя проблема заключается в том, чтобы отобразить мою галерею продуктов. В основном изображения отображаются только тогда, когда я использую ng-repeat, который затем отображает все галереи продуктов. Как отобразить только выбранную галерею? У меня есть ‹product-gallery›‹/product-gallery› с моим кодом: ‹div class='gallery' ng-show=product.images.length› ‹div class=img-wrap› ‹img ng-src={ {product.images[gallerymain.current]}} /› ‹/div› ‹/div› . Я снова потерялся и пробовал различные store.selected в галерее/изображениях безрезультатно. спасибо х 29.03.2015
  • Привет @wickedwicca, позвольте мне предложить вам принять мой ответ (щелкнув галочку), поскольку исходный вопрос был решен. Затем откройте новый вопрос для выбранного выпуска галереи. Кроме того, если вы создадите планкер, демонстрирующий проблему, я уверен, что вы получите ответ в течение часа. 29.03.2015
  • хорошо, извините - совершенно новичок в размещении материалов здесь, поэтому не уверен в этикете… ура подойдет 30.03.2015
  • Без проблем! Я думаю, что понимаю, о чем вы спрашивали, теперь, когда я прочитал это в новом вопросе. Спасибо за создание демо на plunker. 30.03.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..