2015-03-24 5 views
-1

Я проверил this question, но это было не очень полезно, потому что они используют ng-repeat по-разному.Угловой: как использовать ngRepeat и установить опцию переключателя по умолчанию?

This также не рекомендуется.

У меня есть форма:

<label ng-repeat="option in options"> 
    <input type="radio" ng-model="myObject.value" ng-value="option.key"> 
</label> 

Мой угловой контроллер:

options = { 
    key: 'Option 1' 
    val: 'Value 1' 
} 
$scope.myObject = { value: 'default option' } 

Я хотел бы, чтобы это установить опцию по умолчанию радио. Что происходит, так это то, что последний option in list установлен по умолчанию, независимо от того, что я пробовал. Я уверен, что не понимаю, почему это так, так что я здесь.

Как установить параметр радио по умолчанию и что случилось с моей текущей конфигурацией? Спасибо за вашу помощь.

+0

возможно дубликат [Угловое JS нг-повтор списка кнопки радио из области с дефолтом проверены] (HTTP: // StackOverflow. com/questions/25389701/angular-js-ng-repeat-a-radio-button-list-from-scope-with-a-default-checked) –

+0

@ MarkoGrešak Спасибо, но я не знаю, что происходит в этом примере и это решение не работает. – Proto

ответ

0

Если вы хотите установить значение myObject.value в качестве опции по умолчанию для ввода, должна быть опция с этим ключом.

Демо: https://jsfiddle.net/2cb53pj3/

Просто установите $scope.myObject.value со значением согласования ключей вашего options массива

+0

Этот пример показывает, что вы говорите, что это не совсем так: https://docs.angularjs.org/api/ng/input/input%5Bradio%5D В этом примере показаны варианты из 3 разных мест. Может быть, вы можете лучше объяснить, что вы говорите? – Proto

+0

@Proto В примере ссылки вход имеет привязку с '$ scope.color.name', а значение этой переменной - ** blue **. В результате выбранный по умолчанию вход - тот, который имеет значение ** blue **. В вашем примере ваш ввод имеет привязку с '$ scope.myObject.value'. В результате выбранный по умолчанию вход будет соответствовать значению '$ scope.myObject.value'. Кроме того, ваш ввод заполняется массивом 'option.key', поэтому это является причиной утверждения« Если вы хотите установить значение «myObject.value» в качестве опции по умолчанию для ввода, должна быть опция с этот ключ ». –

0

Had это готовый, но другой ответ был представлен прежде, чем мой. Вам нужно установить myObject.value в соответствии с option.key, который вы хотите по умолчанию.

script.js

(function() { 
angular.module('radioExample', []) 
    .controller('ExampleController', ['$scope', 
    function($scope) { 

     $scope.options = [{ 
     'key': 'Option 1', 
     'val': 'Value 1' 
     }, { 
     'key': 'Option 2', 
     'val': 'Value 2' 
     }, { 
     'key': 'Option 3', 
     'val': 'Value 3' 
     }]; 

     $scope.myObject = { 
     value: 'Option 2' 
     }; 
    } 
    ]); 
})(); 

Index.html

<!DOCTYPE html> 
<html ng-app="radioExample"> 

<head> 
    <script data-require="[email protected]*" data-semver="1.4.0-beta.6" src="https://code.angularjs.org/1.4.0-beta.6/angular.js"></script> 
    <link rel="stylesheet" href="style.css" /> 
    <script src="script.js"></script> 
</head> 

<body ng-controller="ExampleController"> 
    <form name="Options"> 
    <div ng-repeat="option in options"> 
     <label>{{option.key}}</label> 
     <input type="radio" ng-model="myObject.value" ng-value="option.key"> 

    </div> 
    Selected option is {{myObject.value}} 
    </form> 

</body> 

</html> 
+0

Вы также должны иметь свои данные в виде массива вместо объекта, чтобы AngularJS мог проходить через него. – steveo

Смежные вопросы