Je travaille sur les formes dynamiques avec ng-repeat. J'utilise la bibliothèque oi-select pour charger mes emplacements. La boîte oi-select a une fonction de sélection multiple. Sur ma page de chargement par défaut, je charge la première valeur de l'option dans cette boîte oi-select. Mais j'utilise une fonction de sélection multiple si je sélectionne une autre option que la première option qu'elle remplace avec cette valeur. En raison de ce problème, je dois sélectionner à nouveau cette première option. Ma question est, comment puis-je charger ma première valeur d'option par défaut dans ce oi-select?Valeur ng-init écrasée dans les multiples options oi-select angulaires
Ensuite, si je sélectionner d'autres options, il ne remplacera pas ma première valeur dans la boîte de sélection .Ici est mon lien plunker http://plnkr.co/edit/m6Q02dlHLBCMVLRLfioh?p=preview
mon code HTML
<body class="container row">
<div ng-app="myApp">
<div ng-controller="myCtrl">
<form role="form" name='userForm' novalidate>
<div class="container">
<div class="row" ng-repeat="user in users">
<div class="form-group">
<div class="col-md-3">
<label>ID</label>
<input ng-model="user.id" id="user.id" name="user.id" placeholder="Enter bugid" type="text" required readonly disabled>
</div>
<div class="col-md-3">
<label>Comments</label>
<textarea ng-model="user.comment" id="textarea1" rows="1" required></textarea>
</div>
<div class="col-md-3 ">
<label>Location</label>
<oi-select ng-model="user.location" multiple oi-options="v for v in locations" ng-init='initLocation(user)' name="select2" required>
</oi-select>
</div>
</div>
</div>
</div>
<div class="buttonContainer text-center btn-container">
<br>
<button ng-disabled="userForm.$invalid" type="button" id="adduser" ng-click="adduser()">Add user</button>
<button type="button" class="btn button--default btn--small pull-center">Close</button>
</div>
</form>
<script src="https://code.jquery.com/jquery.min.js"></script>
<link href="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" type="text/css" />
<script src="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.min.js"></script>
</div>
</div>
mon code js
var app = angular.module('myApp', ['ngResource', 'oi.select']);
app.controller('myCtrl', function($scope, $timeout) {
$scope.ids = [1, 2, 3];
$scope.users = $scope.ids.map(function(id) {
return {
id: id,
comment: "",
location: ""
};
});
$scope.locations = ['india', 'usa', 'jermany', 'china', 'Dubai'];
$scope.initLocation = (user) => {
$timeout(() => {
user.location = $scope.locations[0];
});
}
$scope.adduser = function() {
var data = $scope.users.map(function(user) {
return {
"userid": user.id,
"manualcomment": user.comment,
"location": user.location
}
});
console.log("data", data)
}
});
que vous avez pu résoudre le problème? –
Si l'emplacement est des données statiques, cela fonctionne correctement. Mais selon ma nouvelle condition je charge ce formulaire dans le popup modal. mes valeurs de localisation proviennent de l'appel api. Seulement Pour la première fois si je clique sur mon bouton contextuel modal mes premières données de localisation ne sont pas chargées par défaut dans la boîte de sélection, la méthode ng-init() ne fonctionne pas. Mais si je suis à nouveau cliquez sur le bouton contextuel son fonctionnement bien. La première fois, il n'a pas été chargé cette première valeur d'emplacement. J'ai attaché mon lien de plunker ici. aidez-moi s'il vous plaît .https: //plnkr.co/edit/xDVetaZIzpFdKLS9ihU6? p = preview – user3760261