Не удается заставить кнопки радио работать в режиме ng-repeat с надписями со шрифтами

0

Я борюсь с получением некоторых шрифтов Awesome ярлыков для работы с радио-кнопками в AngularJS ng-repeat. Я знаю, что есть проблема с $scope внутри ng-repeat, и я скопировал примеры нескольких обходов, упомянутых с использованием $parent, но ни один из исправлений, похоже, не работал для меня до сих пор. Я хочу, чтобы строка нажала, чтобы по-прежнему переключаться с переключателями.

JSFIDDLE: http://jsfiddle.net/U3pVM/16692/

HTML

<div ng-app>
    <div ng-controller="TodoCtrl">
        <div class="container-fluid">
            <div class="row" ng-repeat="i in integrations" ng-click="$parent.isChecked = !$parent.isChecked">
                <div class="col-xs-1">
                    <input id="int{{$index}}" type="radio" ng-model="$parent.isChecked" name="radiointegration" ng-value="i.isChecked" />
                    <label for="int{{$index}}"></label>
                </div>
                <div class="col-xs-6" style="padding-top:10px">{{i.text}}</div>
                <div class="col-xs-5" style="padding-top:10px">{{i.isChecked}}</div>
            </div>
        </div>
    </div>
</div>

JS

function TodoCtrl($scope) {
    $scope.integrations = [{
        text: 'one',
        isChecked: false
    }, {
        text: 'one',
        isChecked: false
    }, {
        text: 'one',
        isChecked: false
    }, {
        text: 'one',
        isChecked: false
    }, {
        text: 'one',
        isChecked: false
    }];
}

CSS

.row:nth-of-type(even) {
    background: #f3f8fe;
}
input[type=radio] {
    display: none;
}
/* to hide the radio itself */

input[type=radio] + label:before {
    font-family: FontAwesome;
    display: inline-block;
}
input[type=radio] + label:before {
    content: "\f1db";
}
/* unchecked icon */

input[type=radio] + label:before {
    letter-spacing: 10px;
}
/* space between radio and label */

input[type=radio]:checked + label:before {
    content: "\f00c";
    color: $harmonyColorGood
}
/* checked icon */

input[type=radio]:checked + label:before {
    letter-spacing: 5px;
}
/* allow space for check mark */

label {
    margin-top: 7px;
    margin-left: 10px;
    font-size: 25px;
}
label:hover,
.row:hover {
    cursor: pointer;
    background: #f5f5f5;
}
Теги:
font-awesome

1 ответ

1
Лучший ответ

Как-то вы управляли своими переключателями, как флажки.

Я удалил некоторые ненужные переменные в вашей скрипке, пожалуйста, проверьте, действительно ли это тот эффект, который вам нужен?

<div class="row" ng-repeat="i in integrations">
    <div class="col-xs-1">
        <input id="int{{$index}}" type="radio" ng-model="$parent.checked" name="radiointegration" ng-value="i.text" />
        <label for="int{{$index}}"></label>

играть на скрипке

  • 0
    Могут ли строки по-прежнему нажиматься для переключения флажка? как checkbox =! checkbox на .row ?
  • 0
    Да, но вы делаете $parent.checked = i.text . Хватит обращаться с ними как с флажками @@
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню