pre выберите значение с помощью ng-опций в угловом js [duplicate]

Вы запускаете два потока:

Попробуйте следующее:

// Create two threads:
Thread thread1 = new Thread() {
    public void run() {
        new Downloader().downloadFromConstructedUrl("http:xxxxx",
                       new File("./references/word.txt"),
                       new File("./references/words.txt"));
    }
};

Thread thread2 = new Thread() {
    public void run() {
        new Downloader().downloadFromConstructedUrl("http:xxxxx",
                       new File("./references/word1.txt"),
                       new File("./references/words1.txt"));
    }
};

// Start the downloads.
thread1.start();
thread2.start();

// Wait for them both to finish
thread1.join();
thread2.join();

// Continue the execution...

(Возможно, вам нужно добавить несколько блоков try / catch, но приведенный выше код должен дать вам хороший начало.)

Дальнейшее чтение:

127
задан François Romain 19 September 2016 в 13:10
поделиться

10 ответов

Предположим, что объект находится в вашей области:

<div ng-controller="MyCtrl">
  <select ng-model="prop.value" ng-options="v for v in prop.values">
  </select>
</div>

& nbsp;

function MyCtrl($scope) {
  $scope.prop = {
    "type": "select", 
    "name": "Service",
    "value": "Service 3", 
    "values": [ "Service 1", "Service 2", "Service 3", "Service 4"] 
  };
}

Working Plunkr: http://plnkr.co/edit/ wTRXZYEPrZJRizEltQ2g

118
ответ дан Jason Swett 17 August 2018 в 12:31
поделиться
  • 1
    Ладно, я понял! ng-option снова заменяет <option ng-repeat="value in prop.values">{{value}}</option> – François Romain 26 June 2013 в 21:55
  • 2
    Там должен быть более простой способ сделать это, я считаю это очень сложным для простого выбора значения по умолчанию в угловых js – Edmund Rojas 30 July 2015 в 01:15
  • 3
    Директива ng-option несколько сложна и запутанна в ее синтаксисе. Я думаю, что гибкость в привязке объектов сделала это немного сложнее. Способ, которым я пытаюсь запомнить это, заключается в том, что всякий раз, когда я использую объект, я явно указываю, какие свойства следует использовать для атрибутов value / text элемента управления select. Для получения дополнительной информации см. Это: ozkary.com/2015/08/angularjs-ngoption-directive-simplified.html – ozkary 4 September 2015 в 14:57
  • 4
    если вы хотите создать выбор в представлении, не выписывая параметры, и выберите один из них <select ng-model="limit" value="10" ng-options="v for v in [5,10,15,20,30,50]"></select> – asherrard 6 May 2016 в 15:50
  • 5
    @james Kleeh ..здесь у меня hardcoding первый вариант, так как вы знаете их. Но если мы не знаем параметры и как мы можем отобразить первый по умолчанию? – H Varma 23 November 2016 в 12:33

Если ваш массив объектов сложный:

$scope.friends = [{ name: John , uuid: 1234}, {name: Joe, uuid, 5678}];

И ваша текущая модель была настроена на что-то вроде:

$scope.user.friend = {name:John, uuid: 1234};

Это помогло использовать track by функция на uuid (или любое уникальное поле), если ng-model = "user.friend" также имеет uuid:

<select ng-model="user.friend" 
ng-options="friend as friend.name for friend in friends track by friend.uuid"> 
</select>
19
ответ дан BatteryAcid 17 August 2018 в 12:31
поделиться

Если кто-то использует значение по умолчанию, которое иногда не заполняется на странице в Chrome, IE 10/11, Firefox - попробуйте добавить этот атрибут в поле ввода / выбора, проверяя заполненную переменную в HTML, например :

<input data-ng-model="vm.x" data-ng-if="vm.x !== '' && vm.x !== undefined && vm.x !== null" />
1
ответ дан code_maestro 17 August 2018 в 12:31
поделиться

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

Обычно вы сохраняете только идентификатор нужного параметра в своей базе данных, поэтому ... давайте покажем его

service.js

myApp.factory('Models', function($http) {
var models = {};
models.allModels = function(options) {
    return $http.post(url_service, {options: options});
};

return models;
});

controller.js

myApp.controller('exampleController', function($scope, Models) {
$scope.mainObj={id_main: 1, id_model: 101};
$scope.selected_model = $scope.mainObj.id_model;
Models.allModels({}).success(function(data) {
    $scope.models = data; 
});
});

Наконец, частичный html model.html

Model: <select ng-model="selected_model" 
ng-options="model.id_model as model.name for model in models" ></select>

в основном Я хотел указать, что «model.id_model» в модели model.name для моделей в моделях «model.id_model» использует идентификатор модели для значения, чтобы вы могли сопоставляться с «mainObj.id_model», который также является «selected_model», это просто равное значение, также «как model.name» - это метка для ретранслятора, наконец, «модель в моделях» - это всего лишь обычный цикл, о котором мы все знаем.

Hope это помогает кому-то, и если да, пожалуйста, проголосуйте : D

10
ответ дан Coronellx 17 August 2018 в 12:31
поделиться
  • 1
  • 2
    да, действительно, я просто хотел показать, что это можно сделать со значением непосредственно в пределах $ scope, но спасибо, что указали это. – Coronellx 21 August 2014 в 06:00
  • 3
    Можно ли привязываться к объекту, а не только к int? Я не могу заставить свой nGoptions установить свой выделенный элемент, потому что он не знает, как связать my {id: 24} с моим [{id: 23}, {id: 24}, {id: 25}]. – Victorio Berra 26 February 2015 в 18:34
  • 4
    вы всегда можете использовать $ index, чтобы получить позицию, однако, да, можно привязываться к объекту – Coronellx 3 March 2015 в 18:45

Атрибут ng-model устанавливает выбранную опцию, а также позволяет пропустить фильтр, например orderBy: orderModel.value

index.html

<select ng-model="orderModel" ng-options="option.name for option in orderOptions"></select>

controllers.js

$scope.orderOptions = [
    {"name":"Newest","value":"age"},
    {"name":"Alphabetical","value":"name"}
];

$scope.orderModel = $scope.orderOptions[0];
3
ответ дан David Douglas 17 August 2018 в 12:31
поделиться
  • 1
    Попытаемся это, и я вижу angular.js:117 TypeError: a.forEach is not a function. Есть предположения? – carmenism 28 March 2017 в 17:36

Этот ответ более полезен, когда вы приносите данные из БД, вносите изменения и затем сохраняете изменения.

 <select  ng-options="opt.id as opt.name for opt in users" ng-model="selectedUser"></select>

Проверьте пример здесь:

http://plnkr.co/edit/HrT5vUMJOtP9esGngbIV

36
ответ дан Humberto Morera 17 August 2018 в 12:31
поделиться
  • 1
    Наконец, рабочий ответ здесь, поддержан! Кроме того, с помощью этого решения вы можете использовать неопределенный вариант worknig. & lt; значение опции = "& quot; & quot; & gt; & gt; & gt; Выберите & lt; / option & gt; – Azarus 25 April 2017 в 14:14
  • 2
    Это тот, который работает для меня. – passatgt 10 November 2017 в 11:21
  • 3
    Настолько рад, что этот пост существует, я искал какое-то время для решения, и этот вопрос разрешил мою проблему. – slee423 14 May 2018 в 20:06

Угловая документация для выбора * не отвечает на этот вопрос явно, но она есть. Если вы посмотрите на script.js, вы увидите следующее:

function MyCntrl($scope) {
  $scope.colors = [
    {name:'black', shade:'dark'},
    {name:'white', shade:'light'},
    {name:'red', shade:'dark'},
    {name:'blue', shade:'dark'},
    {name:'yellow', shade:'light'}
  ];
  $scope.color = $scope.colors[2]; // Default the color to red
}

Это html:

<select ng-model="color" ng-options="c.name for c in colors"></select>

Это кажется более очевидным способом дефолта выбранное значение на <select> с ng-options.

* Это от углового 1.2.7

64
ответ дан Jess 17 August 2018 в 12:31
поделиться
  • 1
    Это сработало для меня, я сомневаюсь, что это снова придет, но в настоящее время я использую AngularJS v1.2.27 на случай, если кто-нибудь найдет это и задается вопросом о совместимости. – Bob Cadmire 3 August 2017 в 15:01
<select name='partyid' id="partyid" class='span3'>
<option value=''>Select Party</option>
<option ng-repeat="item in partyName" value="{{item._id}}" ng-selected="obj.partyname == item.partyname">{{item.partyname}}
</option>
</select>
20
ответ дан nirav 17 August 2018 в 12:31
поделиться
<select id="itemDescFormId" name="itemDescFormId" size="1" ng-model="prop" ng-change="update()">
    <option value="">English(EN)</option>
    <option value="23">Corsican(CO)</option>
    <option value="43">French(FR)</option>
    <option value="16">German(GR)</option>

Просто добавьте опцию с пустым значением. Он будет работать.

DEMO Plnkr

8
ответ дан Surya R Praveen 17 August 2018 в 12:31
поделиться
  • 1
    отлично работал. Благодаря! – Akash 31 August 2016 в 06:14
  • 2
    Это действительно работает, если вы добавите что-то вроде <option value="" disabled>Please Select</option> – fWd82 17 May 2017 в 10:28

Более простой способ сделать это - использовать data-ng-init следующим образом:

<select data-ng-init="somethingHere = options[0]" data-ng-model="somethingHere" data-ng-options="option.name for option in options"></select>

Основное отличие здесь в том, что вам нужно будет включить data-ng-model

8
ответ дан WMios 17 August 2018 в 12:31
поделиться
  • 1
    Как указано в документах: Единственное соответствующее использование ngInit - это для сглаживания специальных свойств ngRepeat, как показано в демонстрации ниже. Помимо этого случая, вы должны использовать контроллеры, а не ngInit, чтобы инициализировать значения в области. – wbeange 14 July 2015 в 18:18
  • 2
    То, как я писал, с ng-опциями намного проще и конкретнее. Оба способа работают. – WMios 14 July 2015 в 18:20
Другие вопросы по тегам:

Похожие вопросы: