zoukankan      html  css  js  c++  java
  • angular 个人零点学习

    ng-init设置默认选中值。
    <body ng-app ng-init="msg='hello'">
    <div id="app">
    <input type="text" ng-model="msg">
    <p>{{msg}}</p>
    </div>
    </body>
    废弃声明 (v1.5)
    v1.5 中$http 的 success 和 error 方法已废弃。使用 then 方法替代。
    app.controller('customersCtrl', function($scope, $http) {
    $http.get("/try/angularjs/data/Customers_JSON.php")
    .then(function (result) {
    $scope.names = result.data.records;
    });
    });
    例子如下:
    $http.get('/api/user/showname', {
    params: {
    name: '张三'
    }
    }).success(function (data, status, config, headers) {
    console.info(data);
    alert(data);
    }).error(function (data) {
    console.info(data);
    });
    V1.5正确写法:
    $http.get('/api/user/showname2', {
    params: {
    name: '张三',
    age: 'abc'
    }
    }).then(function (result) { //正确请求成功时处理
    console.info(result);
    alert(result.data);
    }).catch(function (result) { //捕捉错误处理
    console.info(result);
    alert(result.data.Message);
    });

    ng-hide,ng-show显示,隐藏元素
    form表单
    <form>
    选择一个选项:
    <input type="radio" ng-model="myVar" value="dogs">Dogs
    <input type="radio" ng-model="myVar" value="tuts">Tutorials
    <input type="radio" ng-model="myVar" value="cars">Cars
    </form>

    <div ng-switch="myVar">
    <div ng-switch-when="dogs">
    <h1>Dogs</h1>
    <p>Welcome to a world of dogs.</p>
    </div>
    <div ng-switch-when="tuts">
    <h1>Tutorials</h1>
    <p>Learn from examples.</p>
    </div>
    <div ng-switch-when="cars">
    <h1>Cars</h1>
    <p>Read about cars.</p>
    </div>
    </div>
    表单验证
    <input type="text" name="user" ng-model="user" required>
    <span style="color:red" ng-show="myForm.user.$dirty && myForm.user.$invalid">
    <span ng-show="myForm.user.$error.required">用户名是必须的。</span>
    </span>

    <input type="submit"
    ng-disabled="myForm.user.$dirty && myForm.user.$invalid ||
    myForm.email.$dirty && myForm.email.$invalid">



    一个完整的 Web 开发框架(ASP.NET)
    一对一:
    public class CarMap : ClassMap<Car>
    {
    public CarMap()
    {
    Table( "Vehicles.dbo.Car" );

    Id( x => x.CarId );
    Map( x => x.Name );
    Map( x => x.Year );

    HasOne( x => x.SteeringWheel ).PropertyRef( x => x.Car);//表达当前主键关联对应表关联字段
    }
    }

    public class SteeringWheelMap : ClassMap<SteeringWheel>
    {
    public SteeringWheelMap()
    {
    Table( "Vehicles.dbo.SteeringWheel" );

    Id( x => x.SteeringWheelId );
    Map( x => x.Diameter );
    Map( x => x.Color );

    References( x => x.Car, "CarId" ).Unique();
    }
    }

    多对一:
    public class Book
    {
    public Author Author { get; set; }
    //书对应作者,多对一关系
    1.References(o => o.Author);//这个配置表示两张表是主键关联,如果是非主键关联可用如下如下配置方式:
    2.References<Author>(o => o.Author).Column("当前表关联字段名").PropertyRef(o => o.CODE);//Lamda表达方式
    3.References<Author>(o => o.Author).Column("当前表关联字段名").PropertyRef("对应表关联字段名");
    总结:Column :表示主表关联字段的值,如果是主键关联可以不用配置;PropertyRef:表示对应表关联的字段名,如果是主键关联不用配置。
    }

    public class Author
    {
    public IList<Book> Books { get; set; }
    }

    一对多:
    HasMany<Task_Audits>(o => o.Audits)
    .AsSet()
    .KeyColumn("TASKOID")
    .Cascade.All();
    多对多:
    HasManyToMany<Base_OrgInfo>(o => o.Orgs)
    .AsSet()
    .ParentKeyColumn("UserId")
    .ChildKeyColumn("OrgId")
    .Table("Base_Relation_UserOrg");//.Cascade.All();

    命名规范
    ExtJS类名:首字母大写,驼峰命名。
    2、Js方法名:首字母大写,驼峰命名。

    3、Js变量:首字母小写,驼峰命名。

    4、命名空间:根命名空间首字母大写,驼峰命名。其余的首字母小写,驼峰命名。
    5、代码缩进:javascript中,“{}”缩进方式:前花括号“{”不换行,后花括号“}”换行。其余代码每次缩进4个英文字符。
    form表单控件自定义验证:
    xtype: 'textfield', //可以是任何form控件
    validator: function (value) { //value当前控件值
    var me = this;
    var valid = false;
    /// 在此添加自定义验证
    /// 验证成功 valid=true;
    /// 验证失败 valid='错误信息';
    return valid;
    }
    angular js
    ng-if 和ng-show,ng-hide:
    ng-if 在后面表达式为 true 的时候才创建这个 dom 节点,ng-show 是初始时就创建了,用 display:block 和 display:none 来控制显示和不显示
    其实,并不是只有 Controller 可以创建作用域,ng-if 等指令也会(隐式地)产生新作用域。
    总结下来就是,ng-if、 ng-switch 、 ng-include 等会动态创建一块界面的东西,都是自带一级作用域。
    因此,在开发过程中,为了避免模板中的变量歧义,应当尽可能使用命名限定,比如 data.x(form.name),出现歧义的可能性就比单独的 x 要少得多。
    总结:始终将页面中的元素绑定到对象的属性(data.x)而不是 直接绑定到基本变量(x)上。
    SERVICE,FACTORY,PROVIDER:
    service 调用了 factory,返回其实例;factory 调用了 provider,返回其 $get 中定义的内容。factory 和 service 功能类似,只不过 factory 是普通 function,可以返回任何东西(return 的都可以被访问,所以那些私有变量怎么写,你懂的);service 是构造器,可以不返回(绑定到 this 的都可以被访问);
    provider 是加强版 factory,返回一个可配置的 factory。
    angular 的数据绑定采用脏检查机制。
    只有当UI事件,ajax请求或者 timeout 延迟事件,才会触发脏检查(比较UI和后台的数据是否一致!)。
    调用scope.$apply函数,它是触发Angular“脏检查机制”的常用公开接口。
    function safeApply(scope, fn){
    (scope.phase||scope.$root.phase) ? fn() : scope.$apply(fn);
    }

    0830学习
    angularjs模块只保留服务的声明,服务的实例化是由服务注入器完成的,实例化之后服务就留在了服务注入器中。
    (注入就是实现实例化)
    注入器的机制就是当我们需要某个服务的时候,首先根据服务名找到对应的服务提供商,然后由服务提供商创建对应的服务并返回。
    整个过程:
    1模块定义服务、服务提供商;
    2注入器根据模块依赖关系加载模块,实例化所有服务提供商;
    3应用需要服务,注入器根据服务名寻找服务提供商,服务提供商实例化服务。
    angularJS以什么样的方式执行我们定义的服务?指令,变量
    什么才会是在config()的时候被执行的呢,换句话说是这样的东西能够被注入到config里面呢?提供者 和常量
    function routesConfig($stateProvider, $locationProvider, $urlRouterProvider, helper)
    通过 jQuery,您可以使用 hide() 和 show() 方法来隐藏和显示 HTML 元素:
    $("#hide").click(function(){
    $("p").hide();
    });

    $("#show").click(function(){
    $("p").show();
    });
    Angularjs $location html5mode
    如果 $locationProvider.html5Mode 设置为true,在加载入口文件之后,地址栏会变为 http://hostname/love,而不是http://hostname/#/love。但是存在一个问题,后者可以直接访问,前者也许能访问,也许不能,但不会出现预期的结果,典型结果就是NG中文API站,
    每次向在新页面打开某个链接,结果就是华丽丽的报错,例如:http://docs.angularjs.cn/api,所以需要做重定向:
    app.get('/love', function(req, res) {
    res.sendFile(path.join(__dirname, 'static/index.html'));
    });
    路由 抽象状态 abstract 详解
    一个抽象的状态可以有子状态但不能显式激活,它将被隐性激活当其子状态被激活时。
    用处:
    1.在父状态中设置template属性,子状态对应的模板将插入到父状态模板中的ui-view(s)中
    .state('AuditsManage', {
    abstract: true,
    url: '/AuditsManage',
    title: '审核管理',
    resolve: helper.resolveFor('fastclick', 'modernizr', 'icons', 'screenfull', 'animo', 'ngTable', 'ngDialog',
    'sparklines', 'slimscroll', 'classyloader', 'toaster', 'whirl', 'oitozero.ngSweetAlert'),
    views: {
    'content': { //index.html页面的
    //<section ui-view="content" >
    //</section>
    //ui-view的名称,嵌套模块的名称,在另一个页面子模块的templateUrl的页面会是这个ui-view的内容(相当于框架的内容不需要全部写在同一个html页面,使用路由就可以实现多个html绑定在一个浏览器页面一个HTML嵌套显示)
    //框架结构
    template: '<div data-ui-view="" autoscroll="false" ng-class="app.viewAnimation" class="content-wrapper"></div>'
    //父标签的template
    }
    }
    })
    .state('AuditsManage.TaskAudits', {
    url: '/TaskAudits',
    title: '审核',
    templateUrl: '/view/auditsmanage/taskaudits.html', //子模块对应的的模板
    resolve: ['$ocLazyLoad', function ($ocLazyLoad) {
    return $ocLazyLoad.load([{
    files: [
    '/Scripts/Vendor/angular-sweetalert/SweetAlert.js',
    '/Scripts/App/Modules/common/sweetalert.min.js',
    '/Scripts/App/Modules/common/jquery-ui.min.js',
    '/Scripts/app/modules/auditsmanage/taskaudits.controller.js',
    '/Scripts/app/modules/common/potting.table.directive.js',
    '/Scripts/app/modules/common/common.buttonsmenu.directive.js']
    }])
    }]
    })
    2.通过resolve属性,为所有子状态提供解决依赖项
    3.通过data属性,为所有子状态或者事件监听函数提供自定义数据
    4.运行onEnter或onExit函数,这些函数可能在以某种方式修改应用程序。
    注:抽象的状态模板仍然需要,来让自己的子状态模板插入其中。因此,如果您使用抽象状态只是为了预提供基url、提供解决依赖项或者自定义data、运行onEnter/Exit函数,你任然需要设置template: ""。

  • 相关阅读:
    p3201&bzoj1483 梦幻布丁
    p1341 无序字母对
    p2590&bzoj1036 树的统计
    p1462 通往奥格瑞玛的道路
    p1522 牛的旅行 Cow Tours
    ARC097D Equals
    p2371&bzoj2118 墨墨的等式
    ARC097C K-th Substring
    欧拉函数入门合集(模板)
    主席树
  • 原文地址:https://www.cnblogs.com/0280-hnn/p/7459100.html
Copyright © 2011-2022 走看看