小编scr*_*key的帖子

dojo.dijit.Button两次触发onclick事件

我在自定义小部件中实例化一个dijit按钮.这一切都很好.在小部件代码中,我绑定了一个onclick事件处理程序,但是当我单击该按钮时,事件会触发两次.另外一个问题是它还将click事件绑定到页面中与窗口小部件无关的其他按钮.以下是我所拥有的简化版本.任何人都可以告诉我为什么这样做.我花了最后几个小时试图解决它.

代码如下,但您也可以在此处查看

这是实例化自定义小部件的html页面 https://github.com/screenm0nkey/dojo/blob/master/widgets/destroy-widget.html

这是自定义小部件 https://github.com/screenm0nkey/dojo/blob/master/js/tag/widgets/DestroyWidget/Widget.js

这是包含嵌套小部件的模板 https://github.com/screenm0nkey/dojo/blob/master/js/tag/widgets/DestroyWidget/templates/template.html

这是小部件模板中的html;

<div style="border: solid 1px pink">
<h3>${name}</h3>

<div dojoType="dijit.form.Button" data-dojo-attach-point="removeBtn" class="removeBtn">
  click me.
</div>
Run Code Online (Sandbox Code Playgroud)

这是小部件中绑定处理程序的JavaScript;

define('tag/Widget', ['dojo', 'dojo/parser', 'dijit/_Widget', 'dijit/_TemplatedMixin'],

function(d, parser) {

return d.declare('tag.Widget', [dijit._Widget, dijit._TemplatedMixin], {

templateString : d.cache("tag", "/templates/template.html"),
widgetsInTemplate : true,
name : 'no name',
button : 'no button',

postCreate : function() {
  parser.parse(this.domNode);
  this.placeAt(d.byId('authorContainer'));
},

startup : function() {
  dijit.registry.forEach(dojo.hitch(this, function(w) {
    if (w.class === 'removeBtn') {
      this.button = w;
      return;
    }
  }))

  this.button.connect('onclick', function(evt) {
    console.log(evt.target); …
Run Code Online (Sandbox Code Playgroud)

dojo

4
推荐指数
1
解决办法
5477
查看次数

JavaScript中明确和隐含的含义是什么?

我经常看到JavaScript中明确和隐含使用的术语,我仍然不确定它是什么意思,即MDC网站中描述对象模型的以下文本.

构造函数显式设置projects属性的值,并隐式将内部__proto__ 属性的值 设置为值WorkerBee.prototype...

[ 来源 ]

javascript

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

使用git从远程存储库获取干净的副本

我正在使用带有SVN存储库的git.我当地的"主人"分支有点混乱,每次我做的时候我都会遇到git svn rebase各种各样的问题,我和我合作的人都无法解决这个问题.那么我有一种方法可以从远程存储库中获取一个干净的副本,它只会覆盖我本地分支中的所有更改.

git

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

添加和克隆远程存储库有什么区别?

添加远程仓库和克隆远程仓库有什么区别?我正在阅读 git 实用指南,他们正在谈论分布式环境和使用 git remote add。我发现该部分难以理解,以及为什么我应该使用它而不是克隆。

非常感谢

git

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

Jasmine的spyOn toHaveBeenCalled方法的问题

任何人都可以告诉我为什么以下测试失败.

var Person = function() {};

Person.prototype.helloSomeone = function(toGreet) {
  return this.sayHello() + " " + toGreet;
};

Person.prototype.sayHello = function() {
  return "Hello";
};

describe("Person", function() {
 it("calls the sayHello() function", function() {
   var fakePerson = new Person();
   spyOn(fakePerson, "sayHello");
   fakePerson.helloSomeone("world");
   expect(fakePerson.sayHello).toHaveBeenCalled();
  });
});
Run Code Online (Sandbox Code Playgroud)

我从这里拿走它,他说它有效.我可以看到spyOn方法在person对象上创建了一个同名的包装函数,即在对象而不是原型上调用fakePerson.sayHello.

非常感谢

javascript tdd jasmine

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

如何在CoffeeScript中创建命名函数表达式?

如何在CoffeeScript中创建一个命名函数表达式,如下例所示?

var a = function b (param1) {}
Run Code Online (Sandbox Code Playgroud)

要么

return function link (scope) {}
Run Code Online (Sandbox Code Playgroud)

javascript coffeescript

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

标签 统计

javascript ×3

git ×2

coffeescript ×1

dojo ×1

jasmine ×1

tdd ×1