`
v7sky
  • 浏览: 76492 次
文章分类
社区版块
存档分类
最新评论

【AngularJS系列】 自定义列表展示directive

阅读更多
一、写一个directive

module.directive('shopListView, function () {
 return {
            restrict: 'E',
            templateUrl: "/xxx/shopListTemplate.html",
            scope: {
                shopList: '=',
                showDetail : '&'
            },
            link: function (scope, element, attrs) {
                scope.changeItemSelected = function (item) {
                    item.selected = !item.selected;
                }
            }
        };
    });

注意以下几点
1:名称 shopListView,在html中引用时,名称对应shop-list-view
2:其scope是独立,打破了从scope的继承链。其内有属性为shopList,“=”表示该属性值与父scope中的同名属性双向绑定。在html中引用时,属性写做shop-list
3:showDetail ,“&”表示其可以调用父scope中的方法,同样在html引用时,属性对应show-detail

二、shopListTemplate.html的定义

<div ng-repeat="shop in shopList" class="product-item" ng-class="{'selected': shop.selected}">
            <div class="ibox-content product-box" ng-click="changeItemSelected(shop)">
                  <span>店铺ID:{{shop.seller_id}}</span>

                  <button type="button" class='btn btn-xs btn-primary' ng-click="showDetail({key:shop})">详情</button>
            </div>
    </div>
</div>

注意以下几点
1:shop in shopList,shopList对应该directive中的scope下的同名属性
2:ng-click="changeItemSelected(shop)",对应directive中的同名方法
3:ng-click="showDetail({key:shop})"中,showDetail对应scope下的同名方法,传参为一个map对象,键为‘key‘字符串,值为’shop‘对象。通过这样的方式,其效果就是能够将directive中独立scope中的对象,通过函数调用,传递到父controller中

三、在html中使用

<!DOCTYPE html>
<html ng-app="app">
<head>
</head>
<body>
<div ng-controller="shopCtrl">
      <shop-list-view shop-list="dataList" show-detail="showDetail(key)">     </shop-list-view>
</div>

<script src="/angular.min.js"></script>
...
</body>

注意以下几点
1:shop-list-view 名称
2:shop-list 属性
3:show-detail="showDetail(key),show-detail对应scope中的showDetail方法,且该方法要由父scope提供(也就是shopCtrl提供),key为map对应中的键,参考二.3

四、定义controller
angular.module("app", []) 
  .controller('shopCtrl', function ($scope) {
   
   $scope.dataList=[{''seller_id':'xx'}];
 
   $scope.showDetail = function (param) {
        $scope._showModel(
         ...);
    }
});  

注意以下几点
1:showDetail = function (param) ,参数命名’param‘,无所谓


参考链接
http://www.w3ctech.com/topic/1612
http://hudeyong926.iteye.com/blog/2072204
0
0
分享到:
评论

相关推荐

    AngularJS中的Directive自定义一个表格

    最终,通过在AngularJS模块中注册我们的Directive,我们就可以在HTML模板中使用这个自定义的标签来展示我们的表格了。 文章中的代码片段存在一些OCR扫描错误,如“table+=tableStart;”和“table+=tableEnd;”等,...

    详解angularJs中自定义directive的数据交互

    就我对directive的粗浅理解,它一般用于独立Dom元素的封装,应用场合为控件重用和逻辑模块分离。后者我暂时没接触,但数据交互部分却是一样的。所以举几个前者的例子,以备以后忘记。 directive本身的作用域$scope...

    angularjs自定义指令directive正则表达校验

    总结,AngularJS自定义指令为我们提供了一种灵活的方式,通过结合正则表达式,可以在前端实现高效的数据校验,提高用户体验并减少服务器端的负担。通过以上示例,你可以了解到如何创建和使用自定义指令进行HTTP地址...

    AngularJS 自定义指令 - ECharts 2 雷达图

    1. **AngularJS自定义指令**: AngularJS的自定义指令允许开发者扩展HTML的功能,创建可重用的组件。它们可以绑定到DOM元素上,添加新的行为或改变元素的外观。自定义指令的定义通常包括`restrict`、`scope`、`link...

    angularjs自定义正则表达校验指令directive

    总之,AngularJS自定义指令为我们提供了强大的能力,用于创建复杂的表单校验逻辑。通过结合正则表达式,我们可以轻松地实现http链接、纯数字等格式的验证,提升应用的用户体验。在实际项目中,可以根据需求不断扩展...

    AngularJS创建自定义指令的方法详解

    自定义指令是AngularJS中非常强大和灵活的一个特性,它允许开发者封装和复用界面行为。接下来,我们将详细解释自定义指令...希望本文的内容能帮助你更好地理解和使用AngularJS自定义指令,从而提高开发效率和应用质量。

    AngularJS 自定义指令 - ECharts 2 柱状图

    在本文中,我们将深入探讨如何在 AngularJS 中创建自定义指令来封装 ECharts 2 的柱状图。ECharts 是一个基于 JavaScript 的数据可视化库,它提供了丰富的图表类型,包括柱状图、折线图、饼图等。AngularJS 是一个...

    Angularjs自定义指令Directive详解

    AngularJS自定义指令的创建通常通过定义一个模块,并在该模块中使用`.directive()`方法注册一个指令。`restrict`属性用来定义指令的使用方式,它可以是元素、属性、类或注释。`require`属性用来定义指令依赖的其他...

    angularjs利用directive实现移动端自定义软键盘的示例

    总的来说,这个示例展示了如何使用AngularJS的`directive`来解决实际项目中的问题,即在移动设备上创建一个自定义的、适应性的软键盘,以优化用户体验。通过这种方式,我们可以根据项目的具体需求定制键盘的外观和...

    angularjs-router-directive

    它提供了丰富的功能,包括数据绑定、依赖注入、指令等,而"angularjs-router-directive"则聚焦于AngularJS中的路由和指令两个核心概念。 路由在AngularJS中是通过`ngRoute`模块实现的,它允许我们在应用中定义多个...

    angularjs自定义select搜索查找插件

    在本文中,我们将深入探讨如何使用AngularJS来创建一个自定义的Select组件,该组件具有选项自定义和搜索查找功能。AngularJS是一个流行的JavaScript框架,它提供了强大的数据绑定和依赖注入机制,使得构建动态Web...

    AngularJS 自定义指令 - ECharts 2 折线图

    总结来说,这个案例展示了AngularJS自定义指令如何与第三方库(如ECharts)结合,以提高代码的可复用性和可维护性。在实际开发中,可以根据需求进一步扩展这个指令,例如增加更多配置选项、支持动态加载数据等功能。

    关于Angularjs中自定义指令一些有价值的细节和技巧小结

    创建自定义指令通常涉及到`angular.module().directive()`方法。在提供的代码片段中,我们看到一个名为`uiDirective`的示例指令: ```javascript angular.module('yelloxingApp', []).directive('uiDirective', ...

    angularjs指令 下拉框

    "angularjs指令 下拉框"这个主题聚焦于如何利用AngularJS创建一个自定义的下拉框(Dropdown)指令。下拉框在Web开发中非常常见,常用于选项选择或者导航菜单。 首先,我们需要理解AngularJS中的指令是如何工作的。...

    AngularJS 自定义指令详解及实例代码

    在本文中,我们将深入探讨AngularJS自定义指令的创建、使用以及内嵌使用。 首先,创建自定义指令需要通过`angular.module().directive()`方法。假设我们已经创建了一个名为`myApp`的模块,我们可以这样定义一个...

    详解Angularjs 如何自定义Img的ng-load 事件

    本文将详细介绍如何在AngularJS中自定义`img`的`ng-load`事件。 AngularJS的指令系统允许开发者扩展HTML的功能,创建新的DOM事件处理机制。要自定义`ng-load`事件,我们可以创建一个名为`imageonload`的指令。首先...

Global site tag (gtag.js) - Google Analytics