zoukankan      html  css  js  c++  java
  • [AngularJS] Best Practise

    See more: http://toddmotto.com/opinionated-angular-js-styleguide-for-teams/

    /**
     * Created by Answer1215 on 1/13/2015.
     */
    
    /**
    *  Controller(s)
    * */
    
     function AppController($rootScope, $location) {
    
        var appCtrl = this;
    
        $rootScope.$on('$routeChangeError', function(event, current, previous, rejection) {
            appCtrl.message = rejection.message;
            appCtrl.isError = true;
        })
    
        appCtrl.goHome = function() {
    
            $location.path('/');
        }
    }
    
    /**
     *  Directive(s)
     * */
    
    function ErrorDirective() {
        return {
            restrict: "EA",
            bindToController: true,
            controller: 'AppController',
            controllerAs: 'appCtrl',
            templateUrl: 'error.html'
        }
    }
    
    /**
     *  Angular module
     * */
    
     angular.module('app', [
        'ngRoute',
        'app.home'
    ])
        .constant('PEOPLE_URL', 'data.json')
        .controller('AppController', AppController)
        .directive('error', ErrorDirective)
        .config(function($routeProvider) {
            $routeProvider
                .when('/', {
                    templateUrl: "home.html",
                    controller: "HomeController",
                    controllerAs: "homeCtrl",
                    /*
                    *  resolve run first, prepare the data ready,
                    *  then controller & template show up
                    * */
                    resolve: HomeController.resolve
                });
        });
    /**
     * Created by Answer1215 on 1/13/2015.
     */
    
    function HomeController(loadPeople, getMessage) {
        var homeCtrl = this;
    
        homeCtrl.message = getMessage;
        homeCtrl.people = loadPeople;
    }
    
    HomeController.resolve = {
    
        loadPeople: function(SimpleDataService) {
            return SimpleDataService.getPeople();
        },
        getMessage : function(SimpleDataService) {
            return SimpleDataService.message;
        }
    }
    
    
    function SimpleDataService($http, $q, PEOPLE_URL) {
        var simpleData = {};
        simpleData.people = [];
        simpleData.message = "Hello From Service";
    
        simpleData.getPeople = function() {
            return fetchPeople().then(function(result) {
                return result.data;
            });
    
        }
    
        function fetchPeople() {
            var defer = $q.defer();
            $http.get(PEOPLE_URL)
               .success(function(data, status, headers, config) {
                   simpleData.people = data;
                   defer.resolve({data: data, message: "OK"});
                }).
                error(function(data, status, headers, config) {
    
                   if(status === 404){
                       data =  data;
                       defer.reject({data: data, message: "Cannot find " + config.url});
                   }
                });
            return defer.promise;
        }
    
        return simpleData;
    }
    
    angular.module('app.home', [])
        .controller('HomeController',  HomeController)
        .service('SimpleDataService', SimpleDataService);

    While the routes are being resolved we want to show the user something to indicate progress. Angular will fire the $routeChangeStart event as we navigate away from the page, which we can show some form of loading and ajax spinner, which can then be removed on the $routeChangeSuccess

  • 相关阅读:
    Nginx错误日志配置信息详解
    CentOS 7 开放防火墙端口
    Windows Server 2008 R2常规安全设置及基本安全策略
    Whitewidow:SQL 漏洞自动扫描工具
    Windows Server 2008 架设 Web 服务器教程(图文详解)
    如何修改windows系统远程桌面默认端口
    Nginx的访问日志配置信息详解
    重构手法之在对象之间搬移特性【2】
    重构手法之在对象之间搬移特性【1】
    重构手法之重新组织函数【5】
  • 原文地址:https://www.cnblogs.com/Answer1215/p/4224206.html
Copyright © 2011-2022 走看看