Mam listę checkbox, w której chcę nacisnąć wybrane/sprawdzone wartości. Jeśli wepchnę tę wartość do listy wyboru, powinno to być zaznaczone. Na przykład tutaj pchnąłem Samsung Galaxy S6. Jeśli postawię Samsunga Galaxy S6, musimy sprawdzić dane ofertowe, ponieważ Samsung Galaxy S6 ma jakąś ofertę. Tak więc, jeśli zaznaczone jest pole wyboru Samsung Galaxy S6, należy wypełnić wiadomość o ofercie. Oto demo. Próbowałem mojego poziomu, ale nie mogę w stanie rozwiązać, proszę, pomóż mi.Jak przesłać wybrane wartości na liście checkbox używając angularjs
function Test1Controller($scope) {
var serverData = ["Samsung Galaxy Note", "Samsung Galaxy S6", "Samsung Galaxy Avant","Samsung Galaxy Young"];
$scope.items= [] ;
\t //var selectedvalue = window.localStorage.getItem("selectedvalue");
\t // here selected value Samsung Galaxy S6
var selectedvalue="Samsung Galaxy S6";
for(var i=0;i<serverData.length;i++)
{
var modal = {
name:serverData[i],
selected:false
};
\t if (selectedvalue.indexOf(serverData[i]) >= 0 || null)
\t {
modal.selected = true;
}
$scope.items.push(modal);
}
//----------------------------Our Shop Offers----------------------------------------
$scope.offers = [
{
id: "as23456",
Store: "samsung",
Offer_message:"1500rs off",
modalname: "Samsung Galaxy Young"
},{
id: "de34575",
Store: "samsung",
Offer_message:"20% Flat on Samsung Galaxy S6",
modalname: "Samsung Galaxy S6"
},
]
//-----------------------------------------------------------------------------------
$scope.selection = [];
$scope.toggleSelection = function toggleSelection(item) {
$scope.gotOffers=[];
var idx = $scope.selection.indexOf(item);
// is currently selected
if (idx > -1) {
$scope.selection.splice(idx, 1);
}
// is newly selected
else {
$scope.selection.push(item);
}
for(var i=0;i<$scope.selection.length;i++){
for(var j=0;j<$scope.offers.length;j++){
console.log($scope.selection[i].name +" "+ $scope.offers[j].modalname)
if($scope.selection[i].name == $scope.offers[j].modalname){
var idx = $scope.gotOffers.indexOf($scope.offers[j].Offer_message);
if(idx == -1){
console.log("inside idx")
$scope.gotOffers.push($scope.offers[j]);
}
}
}
}
\t \t console.log($scope.offers); \t \t
};
\t //---------------------------------------------------------------------------------------
$scope.check = function() \t
{
var checkedItems = [];
console.log($scope.offerSelected)
for(var i=0;i<$scope.items.length;i++)
{
if($scope.items[i].selected){
checkedItems.push($scope.items[i].name);
}
}
console.log(checkedItems) ;
}
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.min.js"></script>
<div ng-app>
<div ng-controller="Test1Controller" >
<div ng-repeat="item in items">
<input type="checkbox" ng-model="item.selected" ng-checked="selection.indexOf(item) > -1" ng-click="toggleSelection(item)"/> {{item.name}}
</div>
<select ng-show="gotOffers.length > 0" ng-model="offerSelected">
<option ng-repeat="offer in gotOffers" value="{{offer.id}}">{{offer.Offer_message}}</option>
</select>
<input type="button" name="submit" value="submit" ng-click="check()"/>
</div>
</div>
Czy pls wyjaśnić, na czym polega problem dokładnie masz? Widzę w skrzypcach, że po wybraniu dowolnego elementu (tutaj Samsung Galaxy S6), rozwijana zjawia z wiadomością o ofercie. –
także dlaczego ten kod 'if (selectedvalue.indexOf (serverData [i])> = 0 || null) \t {modal.selected = true; } 'jest wymagane. Bez tego również działa.Nie rozumiem, co jest tutaj" selectedvalue "tutaj również zadeklarowane 2 razy. –
@komal: Wyjaśnij to więcej. – Monty