`
vvsuperman
  • 浏览: 27571 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

angularjs常用代码块

阅读更多

js代码难以调试,纠错,因此记录这些代码块,便于调错

 

功能 代码

自定义指令属性

的方法

传递

     这么变态的需求有没有?在自定义的指令的属性中定义外部方法,然后在指令中获取到

句柄。如下:

 

   <ul storetree id="treeDemo" class="ztree" showIcon="showIconForTree" onClickTest="clickTest()"></ul>

对,这里有个 clickTest()方法,需把这个方法传递进去

XX.directive('',function(){
  onClick: function(event,treeId,treeNode,clickFlag){
                         eval(attrs.onclicktest'); //自动变小写
                      },

})
 

 是的,用eval方法就可以了

 

 

页面路由
var app = angular.module('MyApp', ['ngResource','ngRoute','ngGrid']).config(function ($routeProvider) {
    $routeProvider
      .when('/store', {
        templateUrl: 'page/store.html',
        controller: ''
      })
      .when('/schema', {
        templateUrl: 'page/schema.html',
        controller: ''
      })
      .when('/storeinfo', {
        templateUrl: 'page/storeinfo.html',
        controller: ''
      })
  });
 
加入模块
var app = angular.module('MyApp', ['ngResource','ngRoute','ngGrid'])
 
引入新的功能千万别忘记加入模块
controller间交互 通过广播,子->父->子,controller间层级通过html的层级来定,也可在js中指定app.controller("a1").controller("a2")
1 发送者
  
 $scope.$emit("Achange", params);
 
2 父接受者
 
  $scope.$on("Achange",   function (event,params) {
         $scope.$broadcast("AChangeFromParent",params);
    });
 
3 接受者
   
 $scope.$on("AChangeFromParent",  function (event, params) {
         ...dosth
    }
 
    
apply方法 为何要用applay?强制进行数据绑定或触发动作,有时方法并不执行,比如$http请求并不会被触发,此时需调用apply方法,从开发中来看$http请求最容易发生该情况,而且$http是异步回调,次序一定要当心。apply方法参考http://www.cnblogs.com/penghongwei/p/3398361.html


http请求
$http({
              url:URL,
              method:"GET"
         }).success(function(data){
              $scope.spaceSchemaList = data;
         });
 
ng-grid ng-grid中加入其它控件,比如select的方法是在cellTemplate或editableCellTemplate中加入html元素,其中貌似cellTemplate是编辑前,editableCellTemplate是编辑后
$scope.selectCell ="<select ng-model='COL_FIELD' ng-class='\'colt\' + col.index'   ng-input='COL_FIELD' ng-options='id as name for (id, name) in statuses' ng-blur='updateEntity(row)'></select>";
$scope.buttonCell = '<button  class="btn btn-link" ng-click="deleteDFV(row)" ng-show="secondShow">删除</button>';
    $scope.gridOptions = {
        data: 'store.defaultValues',
        enableCellEdit: true,
        columnDefs: [{field: "name",displayName:"名称"},
                     {field:"dType",displayName:"类型", editableCellTemplate: $scope.selectCell ,cellFilter: 'mapStatus'},
                     {field:"defaultValue",displayName:"默认值"},
                     {field:"evalExp",displayName:"表达式"},
                     {displayName:"操作",cellTemplate:$scope.buttonCell, enableCellEdit: false}
           ]
    };
比如,在selectCell中定义了ng-options ng-blur等指令,在columnDefs中定义了Filter,而后是指令及服务的定义
app.filter('mapStatus', function( StatusesConstant ) {
     return function(input) {
       if (StatusesConstant[input]) {
         return StatusesConstant[input];
       } else {
         return 'unknown';
       }
     };
   })

app.factory( 'StatusesConstant', function() {
      return {
        1: 'preset',
        2: 'evaljs'
      };
    });
 
table新增列 加入辅助行,首先隐藏,后点击显示即可。辅助行中关联的为已angularjs辅助对象,当新增成功保存时才会添加到正式数据中去,注意,辅助对象的添加必须采用深拷贝,否则辅助对象都会关联到同一引用上,无论新增多少次,都与最后一次相同。
select select的常用用法
   
 <select class="selectdatatype" ng-model="property.complexTypeName" ng-options = "o.id as o.id for o in spaceSchemaList">
                                                                             <option >--请选择--</option>
     </select>
 

如代码所示ng-model为绑定的对象,ng-options形式为 o.value as o.name for o in List, 其中value为真实传递的值,name为html上显示的值
服务
即单例对象,用于将操作、数据等集中管理,避免分散。·如
app.factory( 'StatusesConstant', function() {
      return {
        1: 'preset',
        2: 'evaljs'
      };
    });
 
如上所示返回了一个对象
resource服务  
 storeInstance.get({setName:treeNode.name}).$promise.then(
            function(resolve){
              $scope.store = resolve;
              $scope.set.setName = $scope.store.entitySetName;
            },
            function(reject){console.log("get store failed")}
          )
如代码所示,使用了$promise代理对象,代理对象有n多好处,具体请自行参考
服务定义为:
app.factory('storeInstance',['$http','$resource',function($http,$resource){
     return $resource('/MDE/DSE/EntitySet(\':setName\')',
                           {setName:'@setName'},
                           {create:{method:'PUT'},params:{},isArray:false}
                         ) ;
}]);
 
其中第二个参数{setName:'@setName'}为入参, 
第三个参数{create:{method:'PUT'},params:{},isArray:false}为给该服务新定义了一个方法,方法名为create,该方法为一个put请求,params:{}表示没有多余参数,因此输入参数与{setName:'@setName'}相同,实例如下
storeInstance.create({setName:treeNode.name})


新增和修改 新增和修改一般都是点击同一个按钮,因此常用方法是使用标志位,但由于为one-page-application,controller不会被销毁,因此使用标志位时可能会导致逻辑混乱
   

 

0
0
分享到:
评论
3 楼 white_crucifix 2014-08-25  
哈,代码放进
2 楼 vvsuperman 2014-08-25  
擦,哪里粗糙了,指正下
1 楼 white_crucifix 2014-08-22  
太粗糙

相关推荐

    AngularJs 动态加载模块和依赖

    - 使用`$ocLazyLoad`:`ocLazyLoad`是一个用于AngularJs的模块,它允许异步加载代码块和模板。通过配置,可以将特定的控制器、服务、模板等按需加载到应用中。 - 结合`ui-router`使用:AngularJs的路由管理模块`ui-...

    AngularJS 最常用的功能汇总

    1. **ng-repeat指令**:ng-repeat是AngularJS中用于数据绑定的关键指令之一,它允许开发者在HTML模板中重复一段代码块以展示数组中的每个元素。ng-repeat不仅用于简单的数组,还可以用于对象数组,并且可以使用order...

    AngularJS学习第一篇 AngularJS基础知识

    通过控制器可以创建可重用的代码块,从而提高代码的维护性和可读性。 6. `ng-options`:这个指令用于在`&lt;select&gt;`元素中创建一个下拉列表,并可以利用对象和数组循环来动态输出列表项。`ng-options`可以用来绑定一...

    angularComponents:angularjs 组件

    在AngularJS的世界里,组件(Component)是一种强大的构造块,用于构建复杂的用户界面。它们是可重用的自包含代码单元,可以独立于其他组件工作,并通过属性接收数据,通过事件发送数据。AngularJS的组件化特性使得...

    Angularjs 自定义服务的三种方式(推荐)

    在Angularjs开发中,服务(Service)是用于封装功能,提供可重用代码块的组件。自定义服务的方式有多种,其中最常用的有三种:通过$provider创建provider服务、通过$factory创建factory服务和通过$service创建service...

    JsPractice:用于练习 AngularJS、Node JS 和基本 javascript 的代码

    - **依赖注入**:AngularJS自动管理对象的创建和依赖关系,降低了代码间的耦合度。 ### 2. Node.js Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用JavaScript进行开发。Node.js...

    atom-snippets:我的 angularjs、jade 和 coffescript 的 Atom 片段

    在使用Atom Snippets时,开发者只需要输入一个特定的触发词,然后按下Tab键,就能自动扩展成完整的代码块。这对于日常编码工作流来说是一个巨大的提升,特别是当涉及到大量重复性代码时。例如,在AngularJS中,输入`...

    Grains:Scala,R,Python,Java,C#,CC ++,JavaScript,TypeScript,AngularJS等的演示代码

    【标题】中的“Grains”很可能是一个项目或者代码库的名称,它包含了多种编程语言的示例代码,如Scala、R、Python、Java、C#、C/C++、JavaScript、TypeScript以及AngularJS。这个项目可能旨在展示这些语言在特定场景...

    angular js资料

    - **可重用性**:方便复用代码块。 - **提高灵活性**:灵活控制视图行为。 #### 五、AngularJS的应用场景 AngularJS适用于各种类型的Web应用开发,尤其是那些需要高度交互性和动态内容的应用。例如,企业级应用、...

    数云PCangular1.x组库(不再维护更新)_JavaScript_SCSS_下载.zip

    4. **服务**:提供可复用的代码块,例如$http服务用于发送HTTP请求,$rootScope服务是所有控制器的父作用域。 5. **模块**:用于组织应用的各个部分,可以包含控制器、服务、指令等。 6. **控制器**:负责处理视图和...

    前端开发与小程序面试题目.pdf

    1. 第一个CSS代码块定义了一种字体样式,包括斜体、无衬线字体、中等粗细、小型大写字母和140%行高。 2. 第二个CSS代码块定义了一个列表样式,包括内部符号、方形符号、自定义图像以及内边距。 3. 第三个CSS代码块...

    MyEclips插件spket.zip

    - **模板支持**:Spket还提供了丰富的代码模板,方便开发者快速生成常用的代码块,如函数、循环、条件判断等。 - **文档查看**:对于JavaScript库和框架,如jQuery、AngularJS等,Spket提供了相关的API文档查看功能...

    angular-zen:用于 Angular.js 的 Sublime Text zen-snippets

    Zen Snippets 是 Sublime Text 的一个特性,允许开发者定义一系列预设的代码块,只需输入简短的触发词,就能自动扩展成完整的代码结构。在 Angular-Zen 中,这些 snippets 针对 AngularJS 的核心概念和常用指令进行...

    Pro JavaScript Techniques, Second Edition

    - **函数**: 函数是JavaScript程序的基本构建块,了解如何定义和使用函数对于编写高效、可维护的代码至关重要。 - **对象**: 对象是JavaScript中最基本的数据结构之一,学习如何创建和操作对象是JavaScript开发的...

    Web开源项目和工具介绍.docx

    - **代码折叠**:能够隐藏或展开代码块,提高代码可读性。 - **宏功能**:可以录制并播放一系列操作作为宏,提高工作效率。 - **应用场景**: - **代码编辑**:适用于日常的编码工作,尤其是对Windows用户来说。 ...

    web前端面试题.doc

    13. AngularJS常用服务:`$http`用于HTTP请求,`$scope`作为模型对象,`$timeout`延迟执行函数等。 14. Vue.js内置指令以`v-`开头,如`v-if`, `v-for`, `v-bind`等。 15. SVG绘制矩形:`...

    JAVA-web窗体界面程序设计

    `&lt;% %&gt;`用于插入Java代码块,`&lt;%= %&gt;`用于输出变量值,`&lt;jsp:action&gt;`标签用于执行特定的动作,如包括其他页面或转发请求。 3. **JSP指令**:如`&lt;%@ page %&gt;`, `&lt;%@ include %&gt;`, `&lt;jsp:forward&gt;`等,它们用于配置...

    JS前台分页

    在实际项目中,可以使用现成的库和框架来简化JS前台分页的实现,例如jQuery Pagination插件、Bootstrap的Pagination组件、AngularJS的ng-infinite-scroll模块等。这些工具通常已经封装好了大部分功能,只需要简单的...

    页面设计API文档

    3. **函数与作用域**:函数是可重复使用的代码块,而作用域决定了变量在何处可以被访问。 4. **对象与原型链**:JavaScript中的对象是键值对的集合,原型链则用于实现继承。 5. **异步编程**:包括回调函数、Promise...

    Coffeescript中文手册

    2. **CoffeeScript语法**:CoffeeScript引入了许多语法糖,如缩进代替大括号表示代码块,`-&gt;`和`=&gt;`用于定义函数,以及更简洁的变量声明和赋值。 3. **变量与作用域**:在CoffeeScript中,变量使用`@`(在类中)或`...

Global site tag (gtag.js) - Google Analytics