使用 $compile 测试 ng-if

2024-03-04

我试图通过针对预定义范围编译视图并运行 $scope.$digest 来测试我的模板之一中的 ng-if。

我发现无论我的条件是真还是假,编译的模板都是一样的。我希望编译后的 html 在 false 时删除 ng-if dom 元素。

beforeEach(module('templates'));
beforeEach(inject(function($injector, $rootScope){
    $compile = $injector.get('$compile');
    $templateCache = $injector.get('$templateCache');
    $scope = $rootScope.$new();
    template = angular.element($templateCache.get('myTemplate.tpl.html'));
}));

afterEach(function(){
    $templateCache.removeAll();
});

it ('my test', function(){
    $scope.myCondition = true;
    $compile(template)($scope);
    $scope.$digest();


    expect(template.text()).toContain("my dom text");
    // true and false conditions both have the same effect
});

这是一个尝试展示正在发生的事情的 plunker(不知道如何在 plunker 中测试,所以我在控制器中完成了它)http://plnkr.co/edit/Kjg8ZRzKtIlhwDWgB01R?p=preview http://plnkr.co/edit/Kjg8ZRzKtIlhwDWgB01R?p=preview


ngIf放置在模板的根元素上。
ngIf删除节点并在其位置添加注释。然后它监视表达式并根据需要添加/删除实际的 HTML 元素。问题似乎是,如果它被放置在模板的根元素上,那么单个注释就是整个模板留下的内容(即使只是暂时的),它会被忽略(我不确定这是否是浏览器-特定行为),导致模板为空。

如果确实如此,您可以将您的ngIfa 中的 ed 元素<div>:

<div><h1 ng-if="test">Hello, world !</h1></div>

另请参阅此简短的演示 http://jsfiddle.net/ExpertSystem/ScLM2/.


另一个可能的错误是以空白模板结尾,因为它不存在于$templateCache。 IE。如果你不把它放入$templateCache明确地,那么以下代码将返回undefined(导致一个空元素):

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

使用 $compile 测试 ng-if 的相关文章

随机推荐

  • SyntaxError:IncomingMessage 处 JSON.parse () 处的 JSON 输入意外结束。

    我正在尝试制作一个天气应用程序 并且正在使用天气 API 来获取信息 但是当我尝试解析 JSON 数据时会出现此错误 SyntaxError Unexpected end of JSON input at JSON parse
  • java中Iterator()的时间复杂度

    我是 Java 新手 我有一个关于java iterator 的时间复杂度的问题 Set
  • pandas 中的 read_table 和 read_csv 有区别吗?

    我已经对其进行了测试 并检查了文档 没有发现明显的差异 无论哪种方式 我都想问以防万一 您是否认为 read csv 应该仅用于 csv 即使它适用于其他类型 而 read table 有什么作用 它们存在时是否相同 您可以使用其中之一来处
  • 使用 Google+ 环聊 API

    如果有人添加 电子邮件受保护 cdn cgi l email protection到他的 Google Hangout 联系人并向其发送一条 Google Hangout Chat 消息 我想从我的服务器设置自动回复他的聊天 有没有办法做到
  • C# 遍历二维数组

    for int k 0 k lt odds GetLength 1 k 上面的代码行应该迭代 Double 类型的二维数组 但不断抛出以下异常 索引超出范围异常 有哪位好心人能解释一下原因并提供解决方案吗 非常感谢 您正在将无效索引传递给G
  • 是否可以为条形图中的每个类别自定义标签?

    最近 我收到一个要求 需要创建一个显示每个项目数据的条形图 这是一个例子 如您所见 Category是项目的名称 并且Series是该项目中不同类型的数据 但是 由于系统不保证项目名称的唯一性 将其用作类别可能会导致问题 并且我将无法使用项
  • CakePHP Cookie 被打乱 - Suhosin 相关

    由于某种原因 在设置后 我无法在任何页面上读取 CakePHP 应用程序中的任何 cookie 唯一返回的是乱码文本 我的代码很简单 this gt Cookie gt write Region test reg this gt Cooki
  • Linux 系统调用的内部结构

    当线程通过引发中断 80 进行系统调用时会发生什么 详细 Linux 对线程的堆栈和其他状态做了什么工作 对处理器进行了哪些更改才能将其置于内核模式 运行中断处理程序后 控制权如何恢复到调用进程 如果系统调用无法快速完成怎么办 例如从磁盘读
  • 有没有办法让 SQLAlchemy 不在 BEGIN 和 COMMIT 中包装 SQL 写入?

    我在 Pylons 1 0 框架上使用 SQLAlchemy 0 6 4 我已经尝试了将 autoflush 和 autocommit 设置为 True 和 False 的所有排列 但我发现 SQLAlchemy 想要包装所有 SQL 会话
  • R 包不存在

    我收到了可怕的包裹R不存在 它要了我的命 代码很好 我在市场上有运行该代码的应用程序 现在效果很简单webview应用程序 的 0 R string app name我的有错吗main xml and string xml很好 我很困惑 我
  • Libgdx - 支持 OpenGL 4+

    是否可以仅使用 Libgdx 进行桌面开发并从 Libgdx 抽象访问较新版本的 Opengl 我的意思是 如果你想开发移动应用程序 你将必须使用 Opengl ES 的某个版本 它不支持经典 Opengl 那样的很多功能 例如绘制线框等
  • Django-channels:ChatConsumer 仅向一个用户发送消息,而不是向两个用户发送消息

    我正在使用 django channels 和 redis 在 django 和 Angular 中实现聊天应用程序 套接字已连接并正常工作 但我面临的问题是 当两个用户在线并使用相同的线程 url 连接同一个聊天室时 它会连接 但任何用户
  • 使用包含单行分区的 Cassandra 表是一种不好的做法吗?

    假设我有一张这样的桌子 CREATE TABLE request transaction id text request date timestamp data text PRIMARY KEY transaction id 据我了解 tr
  • PHP 包含绝对路径

    我的网站上有一个名为 basePath 的变量 其设置为 basePath Systems dgw 我在所有 css js 和图像标签上使用它 为了更好的可见性而缩短 我对这些包含没有任何问题 它们在我所在的任何文件和文件夹中都可以正常工作
  • pip 安装错误:SyntaxError:语法无效

    尝试在 CentOS6 上安装 virtualenv requests 或 pex 时 pip install 不起作用 我使用的是 python2 6 和 pip 9 0 1 谁能告诉我为什么会发生这种情况 pex build root
  • 如何获取点击了哪个按钮?

    我想在单击特定按钮时检查某些条件 该怎么做 document ready function var prm Sys WebForms PageRequestManager getInstance prm add initializeRequ
  • Android 数据绑定构建错误:[数据绑定插件]:无法设置数据绑定

    我正在使用 Google 的 Android 数据绑定库 我曾经使用过该库 现在 似乎 某些东西 发生了变化 并且给数据绑定库带来了问题 我被一个非常普遍的错误所困扰 该错误被证明很难调试 data binding plugin faile
  • Kafka连接消费者引用偏移量并存储在消息中

    如果我使用 kafka connect 来消费消息并存储到 s3 使用 kafka connect s3 连接器 我是否可以将消息偏移量与事件负载一起存储 我希望使用这些数据对消息进行一些排序 并检查是否存在任何间隙或检查我收到的消息中是否
  • 如何在 iOS 中的 TableView 中添加工具栏

    我正在构建一个简单的笔记应用程序 我想在 TableView 的底部添加一个静态栏 例如 我想添加一个帮助按钮 我怎样才能只对我的 TableView 执行此操作 So far 我通过情节提要添加了一个工具栏 但这使得它粘在最后制作的 ta
  • 使用 $compile 测试 ng-if

    我试图通过针对预定义范围编译视图并运行 scope digest 来测试我的模板之一中的 ng if 我发现无论我的条件是真还是假 编译的模板都是一样的 我希望编译后的 html 在 false 时删除 ng if dom 元素 befor