• AngularJS向指令传递数据


    我今天要实现的功能是利用AngularJS来完成客户端过滤器。

    list.html页面主要代码如下:

    ......

    <div class='tj_con_tr_ipt' ng-init="reportKey = ''">
       <input type='text' class='tj_con_tr_ipts' placeholder='请输入资料名称关键字' ng-model="reportKey"/>
    </div>

    ......

    <div class="tj_main_bg"><img src="report/images/bookshelf_background.png" width="100%" height="100%"/></div>
    <report-shelf one-shelf-volume="oneShelfVolume"></report-shelf>
    ......

    directive.js页面主要代码如下:

    angular.module("decisionMakingApp.report.shelf", ["ngUnderscore","decisionMakingApp.report.service"])
    .directive("reportShelf", ["$state","underscore","reportService",
        function ($state,underscore,reportService) {
           return {
               restrict: "E",
               replace: true,
               scope: {
                  oneShelfVolume: "=oneShelfVolume"
               },
               templateUrl: "report/list/template.html",
               link: function (scope) {
                    var _partition = function (items, size) {
                   var result = underscore.groupBy(items, function (item, i) {
                   return Math.floor(i / size);
              });
              return underscore.values(result);
        };

    ......

    }
    }]);

    template.html页面主要代码如下:

    ......
    <li class="tj_mainer_zili" ng-repeat="report in reportShelf | filter:{name:reportKey}" ui-sref="report_viewer({report_name:report.name})">
        <div class="tj_mainer_zili_pic"><img src="{{report.cover_url}}" style="96px;height:125px;"/></div>
        <div class="tj_mainer_zili_txt">{{report.name}}</div>
    </li>
    ......

    在template.html页面过滤器硬编码是能过滤的。但与页面搜索框功能不能实现,不能实现双向绑定。如果没有写指令,而是同一页面,是完全可以实现的。最后发现:

    问题就在于绑定的reportKey没有传入模板页面。

    第一步是在DOM中像传递参数给函数那样,通过属性来设置值:

    在list.html页面在report-shelf自定义指令中加入report-key="reportKey"属性。

    第二步在directive.js页面的隔离作用域内加入reportKey : "=reportKey"。

    这样的话就是通过属性将DOM中ng-model绑定的值复制到隔离作用域中。完成。

  • 相关阅读:
    VMWare虚拟机非正常关机后无法启动
    curl: (1) Protocol "'https" not supported or disabled in libcurl的解决方法
    spring security入门
    oracle中可以使用drop、delete和truncate三个命令来删除数据库中的表
    com.github.pagehelper:pagehelper:jar:3.4.2-fix.jar
    oracle jdbc驱动 ojdbc14-10.2.0.4.0.jar 网盘下载
    PDF复制SQL语句没有换行符的解决办法
    rpm -qa | grep mysql查询不到MySQL
    新文预览 | IoU-aware Single-stage Object Detector for Accurate Localization
    目标检测 | RetinaNet:Focal Loss for Dense Object Detection
  • 原文地址:https://www.cnblogs.com/hxb2015/p/4584614.html
Copyright © 2020-2023  润新知