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

Привязать данные к отдельным словам в div с угловым

Я хочу выделить некоторые слова в тексте и привязать их к своим данным, чтобы иметь возможность щелкнуть по этим словам и изменить некоторые переменные в области видимости. У меня есть список слов в моей модели данных, и у меня есть два представления для одних и тех же данных: список и текст, содержащий слова.

Скриншот двух представлений

Список легко реализовать с помощью ng-repeat: я могу легко фильтровать список и обрабатывать клики по элементам с помощью ng-click.

Для «текстового представления» я не нашел никакой директивы, поэтому я реализовал это самостоятельно, разбивая текст и оборачивая его в промежутки, чтобы реализовать эффект цветного фона. Моя проблема в том, что я не знаю, как привязать данные к этим промежуткам; кроме того, они, похоже, не относятся к контексту angular, поэтому ng-click и другие директивы не будут работать. Как бы вы поняли такое?

Моя цель - щелкнуть «Квинсленд» в документе и развернуть запись «Квинсленд» в списке. В настоящее время я делаю то же самое, когда пользователь нажимает на запись в списке, я расширяю ее, чтобы показать некоторые детали, просто наблюдая за переменной в области видимости с помощью ng-show.

Вот ручка

http://codepen.io/mendaomn/pen/LpRxOL

РЕДАКТИРОВАТЬ 1: Хорошо, я был занят другими проблемами, но теперь я вернулся к этому. Мне удалось решить это, создав директиву reviewDoc

 <div review-doc class="document"></div>

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

var underlinedText = highlightDocument(scope.data.document.text, scope.data.words, scope.filters.applyFilters);
var element = angular.element("<div>" + underlinedText + "</div>");
var test = $compile(element)(scope);
elt.html(test);

Теперь в моем highlightDocument() я в основном просматриваю содержимое документа, нахожу слова и заключаю их в тег span. Такой тег поставляется с атрибутом ng-click, который позволяет фильтровать таблицу слева на основе связанного слова.

Вот определение диапазона:

var boundData = JSON.stringify(word);
var tag_open = '<span ng-click=\'filters.toggleTag(' + boundData + ', $event)\' ng-class=\'{"document-highlight--selected": filters.isTagSelected(' + boundData + ') && filters.isSynonym(' + boundData + ',' + string + ')}\' class="document-highlight--bold" >';
var tag_close = "</span>";

Где boundData — один из объектов, который также можно увидеть в таблице слева. Кажется, что это работает нормально, но это противно и кажется мне хакерским, так как в HTML вы в конечном итоге проверяете такую ​​​​удивленность:

<span ng-click="filters.toggleTag({"name":"Toads","class":"Animal","taxonomy":"GeoNat35","count":3,"score":0.87,"type":"Detected","offset":[{"firstchar":653,"lastchar":658},{"firstchar":787,"lastchar":792},{"firstchar":1103,"lastchar":1108}],"$$hashKey":"object:46"}, $event)" ng-class="{"document-highlight--selected": filters.isTagSelected({"name":"Toads","class":"Animal","taxonomy":"GeoNat35","count":3,"score":0.87,"type":"Detected","offset":[{"firstchar":653,"lastchar":658},{"firstchar":787,"lastchar":792},{"firstchar":1103,"lastchar":1108}],"$$hashKey":"object:46"}) && filters.isSynonym({"name":"Toads","class":"Animal","taxonomy":"GeoNat35","count":3,"score":0.87,"type":"Detected","offset":[{"firstchar":653,"lastchar":658},{"firstchar":787,"lastchar":792},{"firstchar":1103,"lastchar":1108}],"$$hashKey":"object:46"},"toads")}" class="document-highlight--bold">toads</span>

Не могли бы вы предложить лучшее решение?


Ответы:


1

в вашей директиве "text view" добавьте атрибут, привязанный к методу родительской области, например:

<my-directive on-word-click="onWordClick(word)" ...>

Затем в вашей директиве сделайте ng-щелчок по каждому выделенному слову, вызовите связанную функцию со словом в качестве аргумента. В директивах angular есть некоторая хитрость в отношении того, как передавать аргументы, но если вы опубликуете свой код и вам понадобится помощь, люди в этой теме смогут помочь.

23.09.2015
  • вы абсолютно правы, я подготовлю ручку на codepen, чтобы попытаться показать, что я хотел бы получить, но это довольно сложно, так как я еще не нашел решения, поэтому я не уверен, что показать: ) 23.09.2015
  • Новые материалы

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

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

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

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

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

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

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