- ngRepeat: <https://docs.angularjs.org/api/ng/directive/ngRepeat>
ngRepeat is used to loop through an array to dynamically create DOM elements. In this case, based on the array $scope.wineries it creates <li> elements. - $timeout:
$timeout is simply a reference to the standard JavaScript window.setTimeout <http://www.w3schools.com/js/js_timing.asp> function. In this example, we have to use it to alert Angular.js to update.
note: There is one bit of complicated JavaScript that converts the snapshot.val() into the $scope.wineries array.
Replace the respective sections of the JSFIDDLE example as described in <http://buildspa.blogspot.com/2015/01/mixing-in-view.html>.
Replace the respective sections of the JSFIDDLE example as described in <http://buildspa.blogspot.com/2015/01/mixing-in-view.html>.
HTML
<!-- /views/wineries.html (obmit work-around script tag)-->
<script type="text/ng-template" id="views/wineries.html">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><button ng-click="navigate('/');" class="btn btn-default"><span class="glyphicon glyphicon-chevron-left"></span> Back</button> Wineries</h3>
</div>
<ul class="list-group">
<li ng-repeat="winery in wineries" class="list-group-item">
{{winery.val.name}}
</li>
</ul>
</div>
</script>
<!-- EOF -->
JavaScript
controllers.controller('WineriesCntrl', ['$scope', '$location', '$window', '$timeout', function($scope, $location, $window, $timeout) {
var myDataRef;
$scope.wineries;
$scope.navigate = function(path) {
$location.path(path);
};
myDataRef = new $window.Firebase('https://wineapp.firebaseio.com');
myDataRef.child('wineries').once('value', function(snapshot) {
$timeout(function() {
$scope.wineries = Object.keys(snapshot.val()).map(function(key) {
return {key: key, val: snapshot.val()[key]};
});
});
}, function(error) {
});
}]);
No comments:
Post a Comment