小编Bos*_*ohn的帖子

强制javascript超时函数立即执行

如果我在javascript中设置了超时

var myTimeoutId = setTimeout( function(){
    ... do some stuff ....
}, 15000);
Run Code Online (Sandbox Code Playgroud)

并且一个不同的事件让我需要立即执行超时,有没有办法可以使用存储的id来执行函数?我知道我可以保存关闭该功能的引用,调用clearTimeoutmyTimeoutId,然后直接调用函数,但有参与该记帐,像样的数目.

是否有一个功能 executeNow( myTimeoutId )

javascript timeout

3
推荐指数
1
解决办法
2646
查看次数

激活路线时,ember模型功能不执行

我有一条我已经剥离的余烬路线

App.MyRoute = Ember.Route.extend({
    model: function(params){
        console.log("model function executing");
        Ember.Object.create()
    },
    setupController: function(controller){
        console.log("setupController function executed");
    }
});
Run Code Online (Sandbox Code Playgroud)

当我切换到MyRoute时,setupController会被执行,但填充模型的函数永远不会执行.该模型最终只是msg {{link myRoute msg}}标记中传递的对象.

在我们切换到该路由时,我需要加载/计算模型的某些部分.要做到这一点,我需要能够成功更新模型,或者我需要访问setupController函数中链接中传递的参数.关于如何最好地实现这一目标的建议?

编辑

为了尝试散列这个,我创建了一个完整的最小示例,它将产生这种行为:

我的HTML是:

<html>
  <head>
    <title> This is my Page! </title> 

    <script src="js/libs/jquery-1.8.2.js"></script>
    <script src="js/libs/handlebars-1.0.rc.1.js"></script>
    <script src="js/libs/ember.js"></script>
    <script src="js/app.js"></script>
  </head>

  <body>
    <script type="text/x-handlebars">
      {{#linkTo example App.thing}}<p> go </p>{{/linkTo}}
      <div>
        {{outlet}}
      </div>
    </script>

    <script type="text/x-handlebars" data-template-name="index">
      <p> Initial Text </p>
    </script>

    <script type="text/x-handlebars" data-template-name="example">
      <p> After change </p>
    </script>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

使用应用代码:

var App = …
Run Code Online (Sandbox Code Playgroud)

javascript ember.js

2
推荐指数
1
解决办法
1572
查看次数

在焦点应用程序中设置焦点

我希望能够将焦点设置为textarea,因为鼠标单击不在该任务区域中.

作为一个最小的例子,假设我从一个文本开始,如果你点击它,它将被替换为文本字段.我可以通过一个把手脚本实现这个目标:

<script type="text/x-handlebars">
  {{#if isActive}}
  {{view Ember.TextField}}
  {{else}}
  <p {{action foo}}> Click Here to Enter text  </p>
  {{/if}}
</script>
Run Code Online (Sandbox Code Playgroud)

与控制器

App.ApplicationController = Ember.Controller.extend({
    isActive: false,
    foo: function(){
       this.set("isActive", true);
    }
});
Run Code Online (Sandbox Code Playgroud)

这适用于在单击时创建文本字段,但不会将焦点放在该文本区域上(只需单击二次即可实际输入文本).

有没有一个很好的方法来实现这一目标?我可以通过在模板中设置ID并使用jquery选择它来做一些hacky,但这似乎不够优雅.

javascript focus handlebars.js ember.js

2
推荐指数
2
解决办法
3510
查看次数

在Ember中使计算属性绑定识别

如果我在模板中使用计算属性,如何让模板知道状态已经以影响该计算值的方式发生了变化?

例如,如果我显示两个可以递增的数字及其总和,如下所示

App.ApplicationController = Ember.Controller.extend({
    x:0,
    y:0,
    sum: function(){return this.get("x") + this.get("y");}.property("content.sum"),
    incX: function(){ this.set("x", this.x+1);},
    incY: function(){ this.set("y", this.y+1);},
});
Run Code Online (Sandbox Code Playgroud)
<script type="text/x-handlebars">
  <button {{action "incX"}}> {{x}} </button>
  <button {{action "incY"}}> {{y}} </button>
  <p> {{sum}} </p>
</script>
Run Code Online (Sandbox Code Playgroud)

x和y值将在显示中更新,但总和不会更新.如何判断把手/余烬的总和是否依赖于x和y?

javascript handlebars.js ember.js

2
推荐指数
1
解决办法
857
查看次数

检查javascript函数的未知输入数量

我正在使用一个记录很少的javascript API,并且需要编写回调函数,其中参数尚未记录.作为一个开始步骤,我需要检查传入的内容.如果我知道只有一个输入,我可以将回调函数设置为

function( stuff ){
    console.log(stuff);
}
Run Code Online (Sandbox Code Playgroud)

并从那里工作.当我不知道有多少输入时,是否有一种优雅的方式来检查输入?我可以做点什么

function(a,b,c,d,e,f){
    console.log(a) 
    console.log(b) // is this undefined?
    console.log(c) // how about now?
      ....
    console.log(f) // if this isn't undefined I need to do it again with more args
}
Run Code Online (Sandbox Code Playgroud)

它会很好,但它很难看.是否有更简单的方法可以找出已将多少个参与者传递给函数?

javascript

2
推荐指数
1
解决办法
43
查看次数

什么是javascript中的非法调用typeerror

我有javascript代码,如果它在浏览器中运行会引发警报,但是当我运行单元测试时我不想提出警报.

我试着用一条线来解决这个问题

if( allowAlerts === false ){
    alert = console.log;
}
Run Code Online (Sandbox Code Playgroud)

但是当我跑的时候

alert("This bad thing happened");
Run Code Online (Sandbox Code Playgroud)

我回来了

TypeError: Illegal invocation
Run Code Online (Sandbox Code Playgroud)

直接重新分配警报是一个kludgey解决方案,我可以通过其他方式轻松解决问题,但我以前从未遇到过非法调用错误,并希望有人能够解释它的含义.

javascript

2
推荐指数
1
解决办法
4605
查看次数

循环遍历javascript中的一组正则表达式

我有一组正则表达式存储在一个对象中,沿着它的风格

myRegexes = {};
myRegexes.reg1 = /[a-z]+[0-9]+/;
myRegexes.reg2 = /[a-e]+/;
Run Code Online (Sandbox Code Playgroud)

我可以这样做 myRegexes.reg1.exec(sampleStr) ,它完美无缺.

但是,如果我循环通过这个对象说

for( reg in myRegexes ){
    reg.exec(sampleStr);
}
Run Code Online (Sandbox Code Playgroud)

我得到一个例外,说"TypeError:Object reg1没有方法'exec'"

我知道javascript对于for-for循环的方式很不满意,但我不知道它是如何成功找到变量的,但在此过程中失去了它的方法.任何人都可以告诉我为什么这会失败以及正确的方法是什么?

javascript regex for-loop

0
推荐指数
1
解决办法
92
查看次数

标签 统计

javascript ×7

ember.js ×3

handlebars.js ×2

focus ×1

for-loop ×1

regex ×1

timeout ×1