angularjs自定义指令函数传参

2023-05-16

问题描述

在编写导入指令的时候,需要将函数绑定到指令中,并传入一个参数。

初步实现

首先指令的js文件如下,基本的绑定参数和绑定函数,没有什么说的:

angular.module('webappApp')
    .directive('yunzhiImport', function() {
        return {
            scope: {
                importing: '=',    // 双向绑定
                import: '&',       // 绑定函数
                showImport: '&'    // 绑定函数
            },
            templateUrl: 'views/directive/yunzhiImport.html',
            restrict: 'E',
            link: function postLink(scope) {
                var self = this;

                // 数据初始化
                self.init = function() {
                    scope.jsonFile = null;
                };

                self.init();
            }
        };
    });

然后指令的V层:

<span>
    <button ng-hide="importing" class="btn btn-warning btn-sm" type="button" ng-click="showImport()"><i class="fa fa-plus">&nbsp;&nbsp;导入</i>
    </button>
    <div class="row" ng-show="importing">
        <div class="col-md-8">
            <input type="file" accept="application/json" yunzhi-file="jsonFile" />
        </div>
        <div class="col-md-3">
            <button class="btn btn-warning btn-sm" ng-click="import(jsonFile)">上传</button>
        </div>
    </div>
</span>

这里直接调用两个绑定的函数。然后这里我们在调用import()函数的时候,将jsonFile作为参数传给它(jsonFile就是是我们将要导入的文件对象)。

这时去C层打印一下获取到的参数:

clipboard.png

undefined,我们未能获取到参数。

因为我们在调用指令的时候,是使用的待括号的调用方式:

<yunzhi-import importing="importing" import="import()" show-import="showImport()"></yunzhi-import>

因为这样的好处是,&绑定之后,可以直接使用函数。根据以往的经验猜测,他是将函数的执行后绑定在指令上,而这个时候还没有长传文件,所以导致了undefined

解决

这里解决就需要多做一点工作,不能直接绑定函数的执行结果,而是绑定函数体:

<yunzhi-import importing="importing" import="import" show-import="showImport()"></yunzhi-import>

唯一的区别就是去掉了import的括号。然后还需要在指令中做一点处理:

// 导入文件
scope.importFile = function() {
    // 将jsonFile作为参数传给C层的import函数
    scope.import()(scope.jsonFile);
}

我们又写了一个函数,用来触发绑定C层的函数。然后在函数执行的时候,将jsonFile作为参数传给C层的函数。

clipboard.png

问题解决!


相关参考:https://blog.csdn.net/Inuyash...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

angularjs自定义指令函数传参 的相关文章

  • 跟踪嵌套的 ng-repeat 索引

    所以我有一个嵌套的 ng repeat 如下所示 div Index index div Delete me div div Inside index index div div 我希望能够删除我的索引 flowIndex 但是 如果我有这
  • 如何在 Ionic 中创建具有 + 和 - 按钮的输入框

    如何创建一个带有 和 按钮的输入框 单击哪个用户可以更改所选产品的数量 如下屏幕 这是 Ionic 2 的一个快速组合的示例 如果您使用 Ionic 1 您应该能够很容易地适应它 您只需要几个控制器 类函数来递增和递减 然后通过按钮调用它们
  • 如何在angularjs中实现类似Excel的过滤器?

    我需要使用 angulajs v 1 为表实现简单的 Excel 类似 Filer 我遇到了困难 请帮助我 我在下面添加了我的代码片段 我想在选中复选框并单击 确定 按钮后在表中显示过滤后的数据 我正在使用模型执行此操作 但没有得到解决方案
  • 角度指令可以将参数传递给指令属性中指定的表达式中的函数吗?

    我有一个使用指定的表单指令callback具有隔离范围的属性 scope callback 它位于一个ng repeat所以我传入的表达式包括id对象作为回调函数的参数
  • ngClassOdd/ngClassEven 未按预期工作

    使用 Angular 版本 1 2 15 我发现了一个错误 该错误似乎从版本 1 2 2 开始直到 1 2 15 重现 Plunker 演示 http plnkr co edit 3nExMtZ92AQS7BvLsQ8m p preview
  • ng-clip 复制到剪贴板不起作用

    我正在使用一些教程来实现 ng clip 我正在按照教程中的方式进行操作 但它不起作用 我包括 Zeroclipboard min js angular js ngClip js html 看起来像 div div
  • 在 AngularJS 中使用 iFrame

    Using Angular 1 2 我正在尝试找出一种 有角度 的方式来加载 iFrame 但我在任何地方都找不到任何教程 任何真正的讨论 基本上 我有一个显示链接列表的搜索页面 单击链接应调用控制器中的一个函数 该函数将数据 可能通过 h
  • 当 $state.go 调用 $stateChangeStart 时,Angular 1.4.1 UI Router 10 $digest() 迭代

    我有一个需要授权的状态 我听 stateChangeStart事件并且如果toState data protected并且用户没有被授权我打电话e preventDefault and state go login 当我在根 URL 中打开
  • 将表单重置为原始状态(AngularJS 1.0.x)

    AngularJS 1 1 x 的路线图上有一个将表单字段重置为原始状态 重置脏状态 的功能 不幸的是 当前的稳定版本中缺少这样的功能 对于 AngularJS 1 0 x 将所有表单字段重置为其初始原始状态的最佳方法是什么 我想知道这是否
  • 从脚本加载调用 Angular 控制器

    我试图在从 onload 回调加载脚本后更新控制器的状态 我加载 Google 客户端 API 然后在 OnLoadCallback 中 我尝试手动引导 AngularJS 并将设置状态设置到我的控制器上 function OnLoadCa
  • 具有平滑、无限滚动功能的最佳开源网格

    当我开始从事当前的项目时 我接到了一项相当艰巨的任务 构建一些本质上可以取代人们在公司内部使用的大型电子表格的东西 这就是为什么我们认为分页表永远不会起作用 而且老实说 我认为分页是愚蠢的 在分页表上显示动态变化的数据是蹩脚的 假设第 2
  • AngularJS - 将外部 html 文件包含到模态中

    我正在使用 AngularJS 并且有一个 html 页面 其中包含多个引导模式 这个 html 文件由于包含了所有这些模态而变得有点繁重 是否可以在不失去范围的情况下将外部 html 文件包含到这些模态中 如果您使用 Angular UI
  • AngularJS ui.router 更改页面并转到特定部分

    我使用 AngularJSui router在我的应用程序中 对于新的用例 我想更改视图index html到我的partialview options html 我的options html有不同的部分 不同视图之间的路由工作正常 但我想
  • 如何在 AngularJS 中读取 Java 属性文件?

    有什么方法可以从位于网络服务器外部的 angularjs 读取属性文件吗 就像在java中一样 属性文件部署在项目之外 但是我们可以将项目中的这些文件作为filter properties读取 这样任何解决方案都可以在AngularJS中找
  • 使用 Angular 上传文件时 HttpPostedFileBase 为 null

    我将 Angular 与 MVC 结合使用 当我想上传文件时 HttpPostedFileBase一片空白 html
  • 如何让 lodash 与 Angular JS 一起工作?

    我正在尝试使用 lodash 使用它ng repeat指令 以这种方式 div div Hello n div div Being GridController IndexModule controller GridController f
  • SPA 模式下的 AngularJS 和元标记

    你们中有人已经找到了一种在 SPA 模式下使用 AngularJS 处理元标签的优雅方法吗 在基本模板中 我有一些默认的元标记 对于每条路线 每个控制器都会加载具有不同内容的不同视图 很正常 但是我如何更改每个页面的元标记呢 此外 有些页面
  • 在 Angular 中使用多个模块有什么好处?

    我是 Angular Js 的熟悉者 最近我发现在一些项目中 在主模块中创建并组装了多个 Angular 模块 代码看起来像 angular module main main sub1 main sub2 main sub2 angular
  • angular.isdefine 有什么好处?

    有什么好处angular isdefined超过和超过foo undefined 我一时想不出有什么好处 在 Javascript 中以任何方式访问真正未定义的变量 除了 typeof 都会抛出错误 你只能使用Angular isDefin
  • 我将与 ng-include 一起使用什么文件路径?

    我的角度项目的路径是这样的 web server py flask server program app static app js controllers js etc templates index html home html 索引

随机推荐

  • iview Table表格组件无法拆分单元格的解决思路

    最近在开发的Vue项目中 xff0c 使用了iview第三方UI库 对于表格组件的需求是最多的 xff0c 但是在一些特定场景下 xff0c 发现iview的表格组件没有单元格合并与拆分的API xff0c 搜了一下发现很多同学提问关于iv
  • Django+Semantic-ui建立Blog网站(一、基本框架)

    Django应该算是最流行的web应用框架了吧 xff0c 而语义化的CSS框架semantic ui我觉得非常好用 xff0c 使用这个组合做一个blog站点 关于Django的详细介绍以及MTV模式的相关有优点 xff0c 请翻阅官方文
  • Eclipse插件开发首选项篇

    介绍 如果你的插件需要保存一些数据 xff08 参数 xff09 xff0c 比如要设置一些ip地址等等 这时候 xff0c 就要用到Eclipse提供的首选项这个扩展点 我们这里的首选项的数据类型只包括Java中的基本数据类型 扩展点 o
  • java 判断字符串是否是json格式

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 两种实现方式 xff1a 1 通过fastjson解析来判断 xff0c 解析成功 xff0c 是json格式 xff1b 否则 xff0c 不是json格式 xff1a
  • Error response from daemon: Error processing tar file(exit status 1): remove /hosts: device or resou

    2019独角兽企业重金招聘Python工程师标准 gt gt gt You cannot copy over etc hosts Docker provides the container with a custom etc hosts f
  • Jquery动态添加标签元素,在指定标签前或者标签后(append/prepend用法)

    Jquery动态添加标签元素 在指定标签前或者标签后 xff08 append prepend用法 xff09 1 append 方法在被选元素的结尾插入指定内容 2 appendTo 方法在被选元素的结尾插入 HTML 元素 3 prep
  • ASP.NET中常用正则表达式

    34 d 43 34 非负整数 xff08 正整数 43 0 xff09 34 0 9 1 9 0 9 34 正整数 34 d 43 0 43 34 非正整数 xff08 负整数 43 0 xff09 34 0 9 1 9 0 9 34 负
  • 总结 IOS 7 内存管理

    iOS7的一些总结 5 iOS中的内存管理 我们知道 xff0c 为了更加方便地处理内存管理问题 xff0c 将开发人员从繁琐的内存的分配和释放工作中解放出来而专注于产品和逻辑 xff0c iOS提供了一种有效的方法 xff0c 即自动引用
  • 《STL源码剖析》---list容器insert操作的个人理解

    最近在看STL源码剖析 xff0c 感觉还是挺深奥的 xff0c 感觉看不太懂 今天在看list容器这块 xff0c 讲到了insert操作 xff0c 便记录一番自己的理解吧 摘抄书上的 xff1a iterator insert ite
  • PROCESS_YIELD()宏和C语言的switch语句< contiki学习笔记之七>

    写在前面 xff1a 按照main 函数的代码一行一行的分析 xff0c 该是看到了 etimer process 这个位置 但是etimer process实现里的一个宏 PROCESS YIELD 引出了很多故事 xff0c 于是单独把
  • 用c语言指针实现vector,C使用指针将对象添加到Vector中

    我有一个向量添加包含 SDL Surface 指针作为数据成员的对象 xff0c 这意味着我必须使用复制构造函数来实现指针的深层复制 该对象释放析构函数中的表面 指针 xff0c 这就是问题发生的地方 当对象被添加到向量中时 通过按下按钮
  • 【Http认证方式】——Basic认证

    访问请求 xff1a http 192 168 2 113 8080 geoserver rest workspaces时 xff0c 浏览器弹出窗口需要输入用户名和密码 xff0c 并且 xff0c 如果不输入或者输入错误 xff0c 浏
  • c++ http请求

    平常我们要访问某个URL一般都是通过浏览器进行 xff1a 提交一个URL请求后 xff0c 浏览器将请求发向目标服务器或者代理服务器 xff0c 目标服务器或者代理服务器返回我们所需要的数据 xff0c 浏览器接收到这些数据后保存成文件并
  • libcurl实现http登录功能

    用Fiddler Web Debugger捕捉http数据包 xff1a 观察看看 xff0c POST请求的地址为http passport cnblogs com login aspx ReturnUrl 61 http 3a 2f 2
  • 服务器机柜和网络机柜的区别

    原文转载自 http www fwqtg net 服务器机柜 xff0c 用来组合安装面板 插件 插箱 电子元件 器件和机械零件与部件 xff0c 使其构成一个整体的安装箱 服务器机柜由框架和盖板 xff08 门 xff09 组成 xff0
  • Eclipse+Maven创建webapp项目<一>

    Eclipse 43 Maven创建webapp项目 lt 一 gt 1 开启eclipse xff0c 右键new other xff0c 如下图找到maven project 2 选择maven project xff0c 显示创建ma
  • java日期格式(年月日时分秒毫秒)

    package test remote tools combine import java text SimpleDateFormat import java util Calendar import java util Date impo
  • 游戏中的帧同步要求的计算一致性——定点数(Fixed Point)

    最近做了一款帧同步游戏 xff0c 其寻路算法采用了RVO算法 但是由于是移动端的游戏 需要在不同的设备上运行 xff0c 其所有运算必须符合一致性 即所有客户端运算出来的结果必须一致 但是由于浮点数的特性 xff0c 具有误差 xff0c
  • 敏捷测试驱动模式-项目质量保障体系

    结合敏捷项目管理 xff0c 测试驱动模式 xff0c 让测试跑起来 我给这套体系的定义就是 保障质量的同时保证项目进度 xff0c 四个节点及时反馈及时沟通 xff0c 有效的让产品 研发和测试都动起来 xff0c 避免任意一方的停滞 质
  • angularjs自定义指令函数传参

    问题描述 在编写导入指令的时候 xff0c 需要将函数绑定到指令中 xff0c 并传入一个参数 初步实现 首先指令的js文件如下 xff0c 基本的绑定参数和绑定函数 xff0c 没有什么说的 xff1a angular module 39