- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在这个问题中遇到 didTransition 问题后,我想到了这个问题。 'Calling a jquery event after the page transitions '
正如你所看到的,有console.log & jquery
请注意,每个 html(或 hbs,因为这是 Ember.js)文件都有一个名为 float-right-col
的类,并且重要的是,在我的应用程序中的每次转换之后,“float-right-col
' 类被发现并接收类float-right-col-minimized
。
App.ApplicationRoute = Ember.Route.extend({
actions: {
didTransition: function() {
console.log('log2');
$('.float-right-col').addClass('float-right-col-minimized').delay(200);
},
},
});
&& 当然,在每个 html/hbs 文件中都有一个带有类 float-right-col
<div class="float-right-col"></div>
奇怪的是,控制台显示消息“log2”,但“float-right-col
”保持不变。
我的第一个想法是也许 didTransition
最佳答案
你绝对可以用更 Ember 的方式来解决这个问题。如果您打算使用 JQuery 来处理这种逻辑(在我看来,这种方法忽略了 Ember 为您提供的一些工具),您可能需要考虑 Ember Run Loop。 ember 中的事件本质上位于优先级队列中,直到它们被执行。感兴趣的特定队列是 afterRender
:
The afterRender contains jobs meant to be run after all previously scheduled render tasks are complete. This is often good for 3rd-party DOM manipulation libraries, that should only be run after an entire tree of DOM has been updated
大致如下:
Ember.run.scheduleOnce('afterRender', self, function(){
$('.float-right-col').addClass('float-right-col-minimized');
});
当我将 JQuery 库包装在组件中时,有时需要编写这样的代码。
但 Ember 的真正强大之处在于它如何将您的逻辑从 DOM 中取出,并将真相放入 Javascript 中。我不知道你到底想做什么,但让我提出一两个建议。 Ember Controller 旨在封装您的模板状态。如果你有一些 css 依赖于某些东西是否被最小化,你应该有一个像这样的模板:
<div {{bind-attr "class=isMinimized:float-right-col-minimized"}}>
stuff
</div>
然后在您的 Controller 上,您有一个计算属性或只是一个常规属性:
isMinimized: true
someFunction: function(){
if(cond)
this.set('isMinimized', true);
else
this.set('isMinimized', false);
}.observes('someChangingPropertyElseWhere')
或
isMinimized: function(){
if(cond)
return true;
else
return false;
}.property('someChangingPropertyElseWhere')
每当 isMinimized
计算结果为 true 时,都会添加 css 类 float-right-col-minimized
(当 false 时使用::添加)。
您还可以{{bind-attr "class=dynamic :static"}}
,其中dynamic是变量(如果它只是一个常规类而不是一个类,则仅在类名之前显示 : Controller 变量名)。这里的区别在于,dynamic 不是像前面的示例那样返回 true 或 false,而是返回 css 类的字符串。例如:
dynamic: function(){
if(cond)
return 'float-right col float-right-col-minimized'
else
return 'float-right col'
}.property()
在所有这些情况下,您在其他地方的逻辑会更改 Javascript 变量,例如 isMinimzed
,从而更新 DOM。我更喜欢考虑像 isMinimized
这样的变量,并在需要最小化某些东西时设置它,而不是编写 JQuery 选择器,担心 DOM 何时可用等等。感觉更干净。如果您允许,Ember 会在适当的时间重新呈现更改。另外,如果您需要其他依赖于最小化的东西,它可以观察 isMinimized
属性。建立可能导致 DOM 更新链式 react 的关系相当容易。
如果您需要在每个页面上提供此属性,因为转换后每个页面上都有最小化类,请考虑使用 Ember.Mixin
,并用它扩展所有 Controller 。该 mixin 可以封装此类的切换,并将 isMinimized 属性添加到扩展 mixin 的每个 Controller 。
你想要什么吗?我刚刚发现,如果我在 Ember 应用程序中没有与其他人的 DOM 交互时必须编写任何 JQuery,那么我就无法充分利用 Ember 的功能
关于javascript - 为什么 didTransition 不调用我的 jquery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26433126/
为了让我的代码几乎完全用 Jquery 编写,我想用 Jquery 重写 AJAX 调用。 这是从网页到 Tomcat servlet 的调用。 我目前情况的类似代码: var http = new
我想使用 JNI 从 Java 调用 C 函数。在 C 函数中,我想创建一个 JVM 并调用一些 Java 对象。当我尝试创建 JVM 时,JNI_CreateJavaVM 返回 -1。 所以,我想知
环顾四周,我发现从 HTML 调用 Javascript 函数的最佳方法是将函数本身放在 HTML 中,而不是外部 Javascript 文件。所以我一直在网上四处寻找,找到了一些简短的教程,我可以根
我有这个组件: import {Component} from 'angular2/core'; import {UserServices} from '../services/UserService
我正在尝试用 C 实现一个简单的 OpenSSL 客户端/服务器模型,并且对 BIO_* 调用的使用感到好奇,与原始 SSL_* 调用相比,它允许一些不错的功能。 我对此比较陌生,所以我可能会完全错误
我正在处理有关异步调用的难题: 一个 JQuery 函数在用户点击时执行,然后调用一个 php 文件来检查用户输入是否与数据库中已有的信息重叠。如果是这样,则应提示用户确认是否要继续或取消,如果他单击
我有以下类(class)。 public Task { public static Task getInstance(String taskName) { return new
嘿,我正在构建一个小游戏,我正在通过制作一个数字 vector 来创建关卡,该数字 vector 通过枚举与 1-4 种颜色相关联。问题是循环(在 Simon::loadChallenge 中)我将颜
我有一个java spring boot api(数据接收器),客户端调用它来保存一些数据。一旦我完成了数据的持久化,我想进行另一个 api 调用(应该处理持久化的数据 - 数据聚合器),它应该自行异
首先,这涉及桌面应用程序而不是 ASP .Net 应用程序。 我已经为我的项目添加了一个 Web 引用,并构建了各种数据对象,例如 PayerInfo、Address 和 CreditCard。但问题
我如何告诉 FAKE 编译 .fs文件使用 fsc ? 解释如何传递参数的奖励积分,如 -a和 -target:dll . 编辑:我应该澄清一下,我正在尝试在没有 MSBuild/xbuild/.sl
我使用下划线模板配置了一个简单的主干模型和 View 。两个单独的 API 使用完全相同的配置。 API 1 按预期工作。 要重现该问题,请注释掉 API 1 的 URL,并取消注释 API 2 的
我不确定什么是更好的做法或更现实的做法。我希望从头开始创建目录系统,但不确定最佳方法是什么。 我想我在需要显示信息时使用对象,例如 info.php?id=100。有这样的代码用于显示 Game.cl
from datetime import timedelta class A: def __abs__(self): return -self class B1(A):
我在操作此生命游戏示例代码中的数组时遇到问题。 情况: “生命游戏”是约翰·康威发明的一种细胞自动化技术。它由一个细胞网格组成,这些细胞可以根据数学规则生存/死亡/繁殖。该网格中的活细胞和死细胞通过
如果我像这样调用 read() 来读取文件: unsigned char buf[512]; memset(buf, 0, sizeof(unsigned char) * 512); int fd;
我用 C 编写了一个简单的服务器,并希望调用它的功能与调用其他 C 守护程序的功能相同(例如使用 ./ftpd start 调用它并使用 ./ftpd stop 关闭该实例)。显然我遇到的问题是我不知
在 dos 中,当我粘贴此命令时它会起作用: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" https://google.
在 dos 中,当我粘贴此命令时它会起作用: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" https://google.
我希望能够从 cmd 在我的 Windows 10 计算机上调用 python3。 我已重新安装 Python3.7 以确保选择“添加到路径”选项,但仍无法调用 python3 并使 CMD 启动 P
我是一名优秀的程序员,十分优秀!