ऐसा करने का सबसे अच्छा तरीका एक सेवा के साथ है।
.factory('musicPlayer', function() {
var currentSongId;
// public API
return {
getCurrentSong: function() { return currentSongId; },
setCurrentSong: function (id) { currentSongId = id; }
};
});
इसके बाद आप अपनी प्लेलिस्ट में इस का उपयोग कर सकते हैं:: मान लीजिए कि आप एक सेवा गाने खेलने (अति सरल) के लिए जिम्मेदार करते
.controller('PlaylistCtrl', function ($scope, musicPlayer) {
$scope.isCurrentSong = function(idx) {
if ($scope.currentSong == idx) return true;
};
$scope.play = function(idx) {
musicPlayer.setCurrentSong(idx);
};
$scope.$watch(function() {
return musicPlayer.getCurrentSong()
}, function (id) {
$scope.currentSong = id;
});
});
तो आपके विचार तो पहुँच सकता है यह:
<li ng-repeat="song in songs" ng-class="{ active: isCurrentSong($index) }">
<a ng-click="play($index)">{{song.name}}</a>
</li>
और आप इसे अपने अन्य नियंत्रक में प्राप्त करने के लिए इसी तरह एक्सेस करेंगे वर्तमान बजाना गीत। अधिक जानकारी के बिना, यह अधिक विशिष्ट होना मुश्किल है, लेकिन यह सबसे अच्छा अभ्यास दृष्टिकोण है।
स्रोत
2013-02-20 20:21:21
आपका क्या मतलब है? मैं नियंत्रक से कुछ बदलने वाला नहीं हूँ। इसके लिए एनजी-क्लास का उपयोग करने जा रहे हैं। – ValeriiVasin
वास्तव में मेरा मतलब है, नियंत्रक से जावास्क्रिप्ट जोड़ने के बजाय 'ng-class' का उपयोग करें। साथ ही, आप एक नियंत्रक होने पर पुनर्विचार करना चाह सकते हैं, यह चीजों को सरल बना देगा। आपके पास अभी भी समर्पित सेवाएं हो सकती हैं (गीत के लिए एक और दूसरा प्लेलिस्ट के लिए) – Ulises
मुझे यह दृष्टिकोण भी पसंद है। इस बारे में सोचेंगे। इसके अलावा अन्य लोग साझा करते हैं कि कैसे "कोणीय-मार्ग" साझा करना है :) आपके प्रतिक्रियाओं के लिए भी धन्यवाद। – ValeriiVasin