Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript: Angular 2, AngularJS
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
koperfild
9 / 9 / 6
Регистрация: 04.12.2011
Сообщений: 137
1

Передача элемента в функцию и др

28.11.2014, 16:50. Просмотров 1706. Ответов 13
Метки нет (Все метки)

Пытаюсь сделать для
Javascript
1
2
3
4
5
<td bgColor=red width=20 height=20 ng-click="getColor(bgColor)" >
 
$scope.getColor = function (attr) {
                attr.bgColor='green';
            };
Хочу чтобы по нажатию на ячейку менялся её bgColor или другой аттрибут. Видел примеры менять стиль через ng-style, но я не хочу писать классы css. Как написать функцию так, чтобы передавать в виде парамет весь объект td или его аттрибуты. Видел можно использовать функцию с параметрами f1(scope,element,attrs) и дальше использовать attrs значения. Но что-то не выходит
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2014, 16:50
Ответы с готовыми решениями:

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

Передача элемента класса в функцию
Обращаюсь к функции: Add(&amp;ClassAdd); где ClassAdd=new StrAdd ; где StrAdd*...

Передача элемента структуры в функцию
Здравствуйте! Нужна ваша помощь. Есть вот такая программа: #include...

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

Передача массива в функцию используя указатель на функцию
У меня имеется готовая программа без передачи функции в функцию указателем, мне...

13
Qwertiy
821 / 629 / 100
Регистрация: 20.08.2013
Сообщений: 2,524
28.11.2014, 17:06 2
Надо не в функцию dom-элемент совать, а в dom-элемент биндинги.

Добавлено через 39 секунд
attrs - это только для директив.

Добавлено через 2 минуты
Javascript
1
2
3
4
5
$scope.color = 'red';
 
$scope.updateColor = function() {
  $scope.color = 'green';
};
HTML5
1
<td bgColor="{{color}}" width=20 height=20 ng-click="updateColor()" >
0
koperfild
9 / 9 / 6
Регистрация: 04.12.2011
Сообщений: 137
29.11.2014, 06:34  [ТС] 3
А что делать если у меня много этих ячеек (ng-repeat)
Javascript
1
<td bgColor="{{color}}" width=20 height=20 ng-repeat="k in N" ng-click="getColor()" >
Тогда не получится каждой ячейке присвоить переменную (особенно если число вычисляемое).
Задача - нарисовать ячейки с разными оттенками цветов. По нажатию на них записать в переменную "пипетку" цвет, а дальше, нажав на ячейку из другой группы, закрасить выбранную ячейку цветом пипетки.
Ещё был бы рад совету какие коды цветов юзать для градации красного (как меняются RGB байты).

Добавлено через 12 минут
Вот ещё нашёл
http://fdietz.github.io/recipes-with...r-actions.html
Что-то поэлегантнее есть?
0
vovandr
630 / 518 / 194
Регистрация: 19.08.2013
Сообщений: 1,400
29.11.2014, 09:07 4
Что-то типа этого?
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<h3>Пипетка</h3>
<table>
    <tr>
        <td bgColor="{{selectedColor(item)}}" width=20 height=20 ng-repeat="item in colors" ng-click="getColor(item)" >
            test
        </td>
    </tr>
</table>
 
<h3>Действие пипетки</h3>
<table>
    <tr>
        <td bgColor="{{selectedColor(item)}}" width=20 height=20 ng-repeat="item in colorPicker" ng-click="setColor(item)" >
            test
        </td>
    </tr>
</table>
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  $scope.colors = [
            {color: "#C03F3F"},
            {color: "#7D22DF"},
            {color: "#F0F8FF"},
            {color: "#00f"},
            {color: "#fff)"},
            {color: "#000"}
        ];
 
        $scope.colorPicker = angular.copy($scope.colors);
 
        $scope.getColor = function (item) {
            $scope.selected = item.color;
        };
 
        $scope.selectedColor = function (item) {
            return item.color;
        };
 
        $scope.setColor = function (item) {
            item.color = $scope.selected;
        };
1
Qwertiy
821 / 629 / 100
Регистрация: 20.08.2013
Сообщений: 2,524
29.11.2014, 14:45 5
Цитата Сообщение от koperfild Посмотреть сообщение
Тогда не получится каждой ячейке присвоить переменную (особенно если число вычисляемое).
Всё получится. Пихай цвет в тот объект, которые получается в ng-repeat'е.
1
koperfild
9 / 9 / 6
Регистрация: 04.12.2011
Сообщений: 137
29.11.2014, 23:59  [ТС] 6
Пытаюсь сделать как тут Как в функцию angular передать значение атрибута?
Но что-то не выходит. Не происходит обработка клика
http://plnkr.co/edit/8nUnuva5sPDvAuxEJOxT?p=preview
0
vovandr
630 / 518 / 194
Регистрация: 19.08.2013
Сообщений: 1,400
30.11.2014, 12:16 7
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<h1>Hello Plunker!</h1>
<table>
    <tr>
        <td pressed-cell bgColor='green'>lkjsdf</td>
    </tr>
</table>
<script>
    myApp = angular.module('myApp', []);
    myApp.directive("pressedCell", function() {
        return function (scope, element, attrs) {
            element.on('click', function () {
                alert('test');
            })
        };
    });
</script>
0
Qwertiy
821 / 629 / 100
Регистрация: 20.08.2013
Сообщений: 2,524
30.11.2014, 14:32 8
koperfild, у тебя синтаксическая ошибка в скрипте.
И что-то я не уверен, что такое присваивание в attrs вообще должно работать.
0
koperfild
9 / 9 / 6
Регистрация: 04.12.2011
Сообщений: 137
01.12.2014, 14:46  [ТС] 9
Может подойдёт $set(name,value) https://docs.angularjs.org/api/ng/type/$compile.directive.Attributes
И т.к. я совсем мало понимаю в angular было б здорово если покажете как юзать этот $set в приведённом выше примере (в plnkr.co). То ли с attrs то ли с element.
Ещё не понимаю почему где-то пишут $scope а где то без $
0
Qwertiy
821 / 629 / 100
Регистрация: 20.08.2013
Сообщений: 2,524
01.12.2014, 18:04 10
1. Я же сказал как сделать без директив - чем не устраивает?
2. Для изменения атрибутов из директивы можно использовать либо байндинг (который ты использовать не хочешь), либо jqLite/jQuery.
3. Линковочная функция директивы принемает фиксированные аргументы, поэтому не важно,, как ты их назовёшь.
0
koperfild
9 / 9 / 6
Регистрация: 04.12.2011
Сообщений: 137
01.12.2014, 20:14  [ТС] 11
Получение цвета пипетки тыканьем нижних ячеек получилось.
А вот установить в цвет пипетки ячейки таблицы-нет. Потому что в ng-repeat у меня там не colors и как прикрутить к этому colors'ы пока не знаю
http://plnkr.co/edit/LspkwP0qWfLWTyF3Vy3Q?p=preview
0
Qwertiy
821 / 629 / 100
Регистрация: 20.08.2013
Сообщений: 2,524
01.12.2014, 20:42 12
Ничего не понял.
0
koperfild
9 / 9 / 6
Регистрация: 04.12.2011
Сообщений: 137
01.12.2014, 22:11  [ТС] 13
Самые нижние ячейки - ячейки для забора цвета (те что в линию). Назовём их палитрой
Верхняя таблица (3х3) содержит ячейки которые надо закрасить цветами из палитры. Таблица сделана при помощи ng-repeat. В этом ng-repeat используется не массив colors, а другой произвольный массив. Поэтому в items in myParameter2.Value item не содержит объект со свойством color. Это просто счётчик. Так вот как имея этот счётчик изменить bgColor? Я поэтому изначально и хотел передавать в функцию сам объект.
0
Qwertiy
821 / 629 / 100
Регистрация: 20.08.2013
Сообщений: 2,524
01.12.2014, 22:38 14
Ничегно не понял. Держи.
1
01.12.2014, 22:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2014, 22:38

Передача объекта в функцию или функцию друга
Здравствуйте, уважаемые программисты :) К примеру есть такой код. #include...

Передача указателя на шаблонную функцию в другую функцию
Пишу тест для нескольких улучшений квиксорта с измерением времени. Функция...

Передача двухмерного массива из функцию в функцию
Допустим у меня есть функция, в которой &quot;генерируется&quot; массив. Но нужно его...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru