এঙ্গুলার জেস জাভাস্ক্রিপ্ট জেকুয়েরি এইচটিএমএল সিএসএস বুটস্ট্রাপ পিএইচপি সি প্রোগ্রামিং
ফোরাম
 

অ্যাঙ্গুলারজেএস সিলেক্ট বক্স - AngularJS Select Box



অ্যারে অথবা অবজেক্টের আইটেমের উপর ভিত্তি করে AngularJS দিয়ে আপনি ড্রপডাউন লিস্ট তৈরি করতে পারেন।


ng-options ব্যবহার করে সিলেক্ট বক্স তৈরি

আপনি যদি অ্যারে অথবা অবজেক্টের আইটেমের উপর ভিত্তি করে AngularJS দিয়ে ড্রপডাউন লিস্ট তৈরি করতে চান, তাহলে ng-options ডিরেক্টিভ ব্যবহার করুন।

এই উদাহরণে কীভাবে ng-options দ্বারা ড্রপডাউন লিস্ট তৈরি করা যায় তা দেখানো হয়েছেঃ

উদাহরণ

<!DOCTYPE html>
<html lang="en">
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.5/angular.min.js">
    </script>
    <title>AngularJS উদাহরণ</title> 
</head>
<body> 

<div ng-app="myApp" ng-controller="myCtrl">

<select ng-model="selectedName" ng-options="a for a in subjects">
</select>

</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.subjects = ["Bangla", "English", "Math"];
});
</script> 

</body> 
</html> 

ফলাফল




ng-options বনাম ng-repeat

আপনি ng-repeat ডিরেক্টিভ ব্যবহার করেও একই ড্রপডাউন লিস্ট তৈরি করতে পারেনঃ

এই উদাহরণে কীভাবে ng-repeat দ্বারা ড্রপডাউন লিস্ট তৈরি করা যায় তা দেখানো হয়েছেঃ

উদাহরণ

<!DOCTYPE html>
<html lang="en">
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.5/angular.min.js">
    </script>
    <title>AngularJS উদাহরণ</title> 
</head>
<body> 

<div ng-app="myApp" ng-controller="myCtrl">

<select>
<option ng-repeat="a in subjects">{{a}}</option>
</select>

</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.subjects = ["Bangla", "English", "Math"];
});
</script>

</body> 
</html> 

ফলাফল



যেহেতু ng-repeat ডিরেক্টিভ অ্যারের প্রতিটি আইটেমের জন্য এইচটিএমএল কোড ব্লককে পূনাবৃত্তি করে, সেহেতু ng-repeat ডিরেক্টিভ ব্যবহার করে ড্রপডাউন লিস্টের অপশন(option) তৈরি করা যেতে পারে। কিন্তু ng-options ডিরেক্টিভ তৈরিই করা হয়েছে ড্রপডাউন লিস্টের অপশন তৈরির জন্য। তাই ng-options ব্যবহার করাই শ্রেয়।

ng-options এর মাধ্যমে তৈরি ড্রপডাউনের নির্বাচিত ভ্যালু অবজেক্ট হতে পারে। কিন্তু ng-repeat এর মাধ্যমে তৈরি ড্রপডাউনের নির্বাচিত ভ্যালু স্ট্রিং হতে হবে।

আমরা কোনটা ব্যাবহার করবো?

মনে করি car একটি অবজেক্টের অ্যারে।

$scope.cars = [
     {model : "Ford Mustang", color : "red"},
     {model : "Fiat 500", color : "white"},
     {model : "Volvo XC90", color : "black"}
    ];

ng-repeat ডিরেক্টিভের সীমাবদ্ধতা আছে, এক্ষেত্রে নির্বাচিত ভ্যালুকে অবশ্যই স্ট্রিং হতে হবেঃ

উদাহরণ

<!DOCTYPE html>
<html lang="en">
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.5/angular.min.js">
    </script>
    <title>AngularJS উদাহরণ</title> 
</head>
<body> 

<div ng-app="myApp" ng-controller="myCtrl">

<p>একটি গাড়ী সিলেক্ট করুনঃ</p>

<select ng-model="selectedCar">
<option ng-repeat="a in cars" value="{{a.model}}">{{a.model}}</option>
</select>

<h3>আপনি সিলেক্ট করেছেনঃ {{selectedCar}}</h3>

</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.cars = [
        {model : "Ford Mustang", color : "red"},
        {model : "Fiat 500", color : "white"},
        {model : "Volvo XC90", color : "black"}
    ];
});
</script>

</body> 
</html> 

ফলাফল



ng-options ডিরেক্টিভ ব্যবহার করলে নির্বাচিত ভ্যালু অবজেক্ট হতে পারেঃ

উদাহরণ

<!DOCTYPE html>
<html lang="en">
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.5/angular.min.js">
    </script>
    <title>AngularJS উদাহরণ</title> 
</head>
<body> 

<div ng-app="myApp" ng-controller="myCtrl">

<p>একটি গাড়ী সিলেক্ট করুনঃ</p>

<select ng-model="selectedCar" ng-options="a.model for a in cars">
</select>

<h3>আপনি সিলেক্ট করেছেনঃ {{selectedCar.model}}</h3>
<p>কালার হলোঃ {{selectedCar.color}}</p>

</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.cars = [
        {model : "Ford Mustang", color : "red"},
        {model : "Fiat 500", color : "white"},
        {model : "Volvo XC90", color : "black"}
    ];
});
</script> 

</body> 
</html> 

ফলাফল



যখন নির্বাচিত ভ্যালু অবজেক্ট হয়, তখন ইহা অনেক তথ্য ধারণ করতে পারে।

আমরা আপনাকে ng-options ব্যবহার করার জন্য সুপারিশ করবো


অবজেক্ট(Object) যখন ডাটা সোর্স

পূর্ববর্তী উদাহরণে অ্যারেকে ডাটা সোর্স হিসাবে ব্যবহার করেছিলাম, কিন্তু আমরা অবজেক্টকেও ডাটা সোর্স হিসাবে ব্যবহার করতে পারি।

মনে করি car একটি অবজেক্ট(object) যার কী/ভ্যালু জোড়ায় জোড়ায় আছেঃ

$scope.cars = {
     car01 : "Ford",
     car02 : "Fiat",
     car03 : "Volvo"
  };

অবজেক্টের জন্য ng-options এট্রিবিউটের মধ্যে এক্সপ্রেশন সামান্য ভিন্ন হয়।

ডাটা সোর্সকে অবজেক্ট হিসাবে ব্যবহার করলে a দ্বারা কী(key) এবং y দ্বারা ভ্যালু বুঝায়ঃ

উদাহরণ

<!DOCTYPE html>
<html lang="en">
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.5/angular.min.js">
    </script>
    <title>AngularJS উদাহরণ</title> 
</head>
<body> 

<div ng-app="myApp" ng-controller="myCtrl">

<p>একটি গাড়ী সিলেক্ট করুনঃ</p>

<select ng-model="selectedCar" ng-options="a for (a, y) in cars">
</select>

<h3>আপনি সিলেক্ট করেছেনঃ {{selectedCar}}</h3>

</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.cars = {
        car01 : "Ford",
        car02 : "Fiat",
        car03 : "Volvo"
    }
});
</script> 

</body> 
</html> 

ফলাফল



কী/ভ্যালু জোড়ের মধ্যে নির্বাচিত ভ্যালু সবসময়ই ভ্যালু হয়।

ভ্যালু জোড়ের মধ্যে ভ্যালু অবজেক্টও হতে পারেঃ

key-value এর ক্ষেত্রে নির্বাচিত ভ্যালুটি এখনো value। এক্ষেত্রে ইহা একটি অবজেক্টঃ

উদাহরণ

<!DOCTYPE html>
<html lang="en">
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.5/angular.min.js">
    </script>
    <title>AngularJS উদাহরণ</title> 
</head>
<body> 

<div ng-app="myApp" ng-controller="myCtrl">

<p>একটি গাড়ী সিলেক্ট করুনঃ</p>

<select ng-model="selectedCar" ng-options="a for (a, y) in cars">
</select>

<h1>আপনি সিলেক্ট করেছেনঃ {{selectedCar.brand}}</h1>
<h2>মডেলঃ {{selectedCar.model}}</h2>
<h3>কালারঃ {{selectedCar.color}}</h3>

</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.cars = {
        car01 : {brand : "Ford", model : "Mustang", color : "red"},
        car02 : {brand : "Fiat", model : "500", color : "white"},
        car03 : {brand : "Volvo", model : "XC90", color : "black"}
    }
});
</script> 

</body> 
</html> 

ফলাফল



key-value জোড়ের মধ্যে ড্রপডাউন লিস্টের অপশন কখনোই key হতে পারবে না। ইহা যালু(value) অথবা ভ্যালু(value) অবজেক্টের প্রোপার্টি হতে পারেঃ

উদাহরণ

<!DOCTYPE html>
<html lang="en">
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.5/angular.min.js">
    </script>
    <title>AngularJS উদাহরণ</title> 
</head>
<body> 

<div ng-app="myApp" ng-controller="myCtrl">

<p>একটি গাড়ী সিলেক্ট করুনঃ</p>

<select ng-model="selectedCar" ng-options="y.brand for (a, y) in cars">
</select>

<h1>আপনি সিলেক্ট করেছেনঃ {{selectedCar.brand}}</h1>
<h2>মডেলঃ {{selectedCar.model}}</h2>
<h3>কালারঃ {{selectedCar.color}}</h3>

</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.cars = {
        car01 : {brand : "Ford", model : "Mustang", color : "red"},
        car02 : {brand : "Fiat", model : "500", color : "white"},
        car03 : {brand : "Volvo", model : "XC90", color : "black"}
    }
});
</script> 

</body> 
</html> 

ফলাফল