分享好友 前端技术首页 频道列表

Angular JS 学习笔记(自定义服务:factory,Promise 模式异步请求查询:$http,过滤器用法filter,指令:directive)

angular  2023-03-08 19:200

刚学没多久,作了一个小项目APP,微信企业号开发与微信服务号的开发,使用的是AngularJS开发,目前项目1.0版本已经完结,但是项目纯粹为了赶工,并没有发挥AngularJS的最大作用,这几天项目到了测试那边,自己正好闲下来了,可以把项目优化一下,目标是做成SPA(单页面应该程序),因为Android版本实在是卡得不行,iPhone上面运行还可以见得了人。不得不优化,SPA做完了,还要做本地化存储。OK,把今天的笔记写下来,回家再完善

 

##ListController.js 

/// <reference path="../angular.js" />


/*创建liveModule模块*/
var liveModule = angular.module('liveModule', []);



/*创建控制器*/
liveModule.controller('liveListController', function ($scope, Book) {

    //自定义服务
   Book.GetList().then(function (data) {
       $scope.list = data;
    });
});


//过滤器,调用方式:绑定字段|changeColorFilter
liveModule.filter('changeColorFilter', function () {
    var changeColor = function (input) {
        var str = '<span style="color:red">' + input + "</span>";
        return str;
    };
    return changeColor;
});

/*创建指令*/
liveModule.directive('BookList', function () {
    return {
        restrict: "AE",
        controller: function ($scope, Book) {
         
            var list = Book.GetList().then(function (data) {
                $scope.BookList = data;
                $scope.ddlBook = data[0];
            });
          
        },
        template:'<select ng-model="ddlBook" ng-options="t.BookName for t in BookList"></select>'
    };
});

 

  ##listService.js(自定义服务类),请求服务器,Promise 模式异步请求(推荐做法)

//创建服务,调用方式:Books.query();
liveModule.factory('Books', function () {
    var teachers = {};
    teachers.query = function () {       
        return [
            { bookname: '笑傲江湖',author:'金庸' },
            { bookname: 'c语言程序设计', author: '谭浩强' },
            { bookname: '小李飞刀', author: '古龙' },
        ];
    }
    return teachers;
});

//与服务器交互的服务,调用方式:Book.GetList();
liveModule.factory('Book', function ($http, $q) {
    return {
        GetList: function () {
            var defer = $q.defer();
            $http({ url: '/ashx/datacenter.ashx', method: 'post' }).success(function (data, status, headers, config) {
                defer.resolve(data);
            }).error(function (msg) {
                defer.reject(msg);
            });
            return defer.promise;
        }
    };
});

##index.html

<!DOCTYPE html>
<html ng-app="liveModule">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <script src="Scripts/angular/angular.js"></script>
    <script>
        
    </script>
    <script src="Scripts/controllers/LiveController.js"></script>
    <script src="Scripts/common.js"></script>
    <script src="Scripts/services/liveService.js"></script>
    
    <title></title>
</head>
<body >

 
    <br />
    <br />
    <br />
    <br />

    <ul ng-controller="liveListController">

        <li ng-repeat="item in list">
            <span ng-bind="item.BookName"></span>
        </li>

    </ul>


</body>
</html>

##datacenter.ashx

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebApplication1.ashx {
    /// <summary>
    /// DataCenter 的摘要说明
    /// </summary>
    public class DataCenter : IHttpHandler {

        public void ProcessRequest(HttpContext context) {
            context.Response.ContentType = "text/plain";

            List<Book> books = new List<Book>();
            books.Add(new Book() { Author = "徐誉兵", BookName = "AngularJS 从入门到精通" });
            books.Add(new Book() { Author = "谭浩强", BookName = "C 语言程序设计" });
            books.Add(new Book() { Author = "金庸", BookName = "天龙八部" });
            context.Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(books));
        }

        public bool IsReusable {
            get {
                return false;
            }
        }


        class Book {
            public string BookName { get; set; }
            public string Author { get; set; }
        }

    }
}

运行结果:

Angular JS 学习笔记(自定义服务:factory,Promise 模式异步请求查询:$http,过滤器用法filter,指令:directive)

 

查看更多关于【angular】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
Angular.js的作用域和数据绑定
初识Angular.js通过初识Angular.js可以做一个简单的入门,下面开始做深入的了解吧。作用域作用域($scope)和应用的数据模型相关联的,同时作用域也是表达式执行的上下文。$scope对象是定义应用业务逻辑、控制器方法和视图属性的地方。 作用域是视图和控制器

0评论2023-03-16944

angularJSapi学习-angular.copy使用
angular.copy使用效果:初始状态:输入信息后未保存状态:点击save后状态:当输入框内容和master内容不一致时:点击reset使得user的信息被重置为master中信息: 具体代码: 1 !DOCTYPE HTML 2 html ng-app="app" 3 headscript src="./angular.min.js"/script

0评论2023-03-16345

Angular.js之内置过滤器学习笔记 javascript过滤器
!DOCTYPE htmlhtml lang="en"headmeta charset="UTF-8"titleangularFilter/titlescript src="http://cdn.bootcss.com/angular.js/1.4.6/angular.js"/script/head  body ng-app="angularJS" ng-controller="ctrl"    div{{

0评论2023-03-08452

Angular 隨記
Windows下更新Node 和NPM方法管理員模式打開powershell執行以下命令:Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Forcenpm install -g npm-windows-upgradenpm-windows-upgrade

0评论2023-03-08858

双向数据绑定(angular,vue) 双向数据绑定指令
最近github上插件项目更新了关于双向数据绑定的实现方式,关于angular和vue.angular众所周知是使用的脏检查($dirty)。一开始大家会认为angular开启了类似setInterval去不停的循环检查,性能极差,但其实并不是,$dirty是在一定条件下才会去执行,比如输入框

0评论2023-03-08953

angular.js使用ui-router注入报错,这里是版本问题导致的
 报错如下:common.ts:604Uncaught SyntaxError: Unexpected token ) stateEvents.ts:211Uncaught SyntaxError: Unexpected token ) jquery.js:3827 Uncaught Error: [$injector:modulerr] Failed to instantiate module salesApp due to: Error: [$injector

0评论2023-03-08406

angular5给懒加载模块添加loading angular2懒加载
在根组件的构造函数中直接执行:this.router.events.subscribe(event={if(event instanceof RouteConfigLoadEnd) {this.toast.hide();}if(event instanceof RouteConfigLoadStart) {this.toast.loading();} }); 

0评论2023-03-08610

mean(bootstrap,angular,express,node,mongodb)通用后台框架
学习node,我这个毫无美感的程序员在bootstrap与node的感染下,向着“全栈工程师”迈进,呵呵!最终选择如题的技术方案,这些东东都算比较新的,网上的资料比较少,参考了不少github程序及自己的努力,终于有一些感觉了,于是开贴记录一些感悟,供自己与同道

0评论2023-03-08393

Angular 核心概念
module(模块)作用通过模块对页面进行业务上的划分,根据不同的功能划分不同的模块。将重复使用的指令或者过滤器之类的代码做成模块,方便复用注意必须指定第二个参数,否则变成找到已经定义的模块请参照资料-备课代码-20-module.html理解语法语法: angular.

0评论2023-03-08579

Angular 核心概念2
自定义指令指令增强了 HTML,提供额外的功能内置的指令基本上已经可以满足我们的绝大多数需要了少数情况下我们有一些特殊的需要,可以通过自定义指令的方式实现普通指令语法div hello-world/divhello-world/hello-world angular.module('myModule', []).contr

0评论2023-03-08934

Angular框架 angular框架和vue框架的区别
Angular 框架库和框架的区别jQuery:库库一般都是封装了一些常用的方法自己手动去调用这些方法,来完成我们的功能$('#txt').val('我是小明');$('div').text('xx');angular:框架框架都是提供一种规范或者模式,我们却要按照它提供的这种规则去写代码框架会自动

0评论2023-03-08930

更多推荐