是否有可能做到这一点:
myfile.js:
function foo() {
alert(<my-function-name>);
// pops-up "foo"
// or even better: "myfile.js : foo"
}
Run Code Online (Sandbox Code Playgroud)
我的堆栈中有Dojo和jQuery框架,所以如果其中任何一个更容易,它们就可用了.
很多人都看过流行的AJAX框架(Dojo,jQuery,YUI)的谷歌趋势图.
该图表似乎清楚表明,对Dojo的兴趣在2008年第二季度崩溃,下降了80%; jQuery获得了这个优势,并最终成长为Dojo大小的三倍多.
为什么?2008年第二季发生了什么事情,拆除了对Dojo的兴趣?
(请注意,我对Dojo与jQuery的比较并不感兴趣;即使你能解释为什么一个比另一个好,但很难理解为什么在2008年4月突然变得清晰.)
dojo中getBoundingBox()的文档说:
返回形状的边界框.文本形状是基于点的对象,因此它不定义边界框.
我不明白.Web的矢量图形的任何理智的实现包括文本对象的边界框(raphaelJS和jQuery SVG)!在这里,"基于点的对象"是什么意思?
我没有找到Group对象的边界框的引用,但是在使用最新的Dojo版本时,也getBoundingbox
返回null
了Groups的组
我自己可以很容易地为矩形做边界框,但是我需要边界框的唯一真正有问题的形状是Group和Text.
我结束了hotpatching dojo,如:
dojox.gfx.Text.prototype.getBoundingBox = function() { return this.rawNode.getBBox();});
dojox.gfx.Group.prototype.getBoundingBox = function() { return this.rawNode.getBBox();});
Run Code Online (Sandbox Code Playgroud)
哪个当然只适用于SVG输出前端.
但我想知道,我错过了什么吗?有没有更好的方法呢?
我试过了
node.cloneNode(true); // deep copy
Run Code Online (Sandbox Code Playgroud)
它似乎没有复制我添加的事件监听器node.addEventListener("click", someFunc);
.
我们使用Dojo库.
我正在尝试创建自定义Store,它应该使用WebSocket或REST(如果WebSocket失败).
代码文件rachet-store.js
它几乎完美地工作.它也适用于REST(myRest)也没有问题.
问题是如果使用wsStore并且如果我删除datagrid中第一页或第二页上的行,则会通知datagrid并刷新自身.但是,如果我删除第三页或任何其他页面上的行,则不会刷新商店.
我认为问题可能在某处sort()
,因为使用Grid(或Pagination)的工作原理.(但它只是一个猜测......)
所以,问题是,我做错了什么?
我正在构建自己的Ajax网站,我正在考虑REST和RPC.
如果我的服务器支持Servlets我只是安装persevere并结束问题,但我的服务器不支持Servlets.
RPC更易于编码(IMO),并且可以轻松地用PHP编写.我只需要一个数据库查询执行器.我正在使用Dojo Toolkit和JSON.
为什么我应该选择REST over RPC或RPC over REST?
var testObj = this.getView();
Run Code Online (Sandbox Code Playgroud)
如果testObj callableFunction
在我实际尝试调用之前有,那么我如何检查DoJo(或者只是本机JS),如果callableFunction()
不存在则会失败?我更喜欢本机DoJo解决方案,因为我需要这个解决方案适用于所有浏览器.
我是新来的学习道场和我所遇到的require()
和define()
功能,我不能让我的头周围其一.另外,我什么时候才能使用其中任何一个?一个小的演示或示例将是有益的.非常感谢!
我有一个heckuva时间过渡到Dojo和新的AMD结构,我真的希望有人可以对整个概念有所了解.过去几周我一直在Google上生活,试图找到关于不使用的信息,但是使用它的结构和设计模式趋势.
我觉得奇怪的是,对于一个相对复杂的javascript应用程序,例如需要创建和设置Dijits的主页面,创建的DOM元素等,我需要,因此使用,不同模块的TON否则在AMD系统之前的dojo命名空间中可用(或者,至少不分配给23个不同的vars).
例:
require(['dijit/form/ValidationTextBox', 'dijit/form/SimpleTextarea', 'dijit/form/CheckBox', 'dijit/Dialog', 'dijit/form/Form'])
require(['dojo/ready', 'dojo/parser', 'dojo/dom-style', 'dijit/registry', 'dojo/dom', 'dojo/_base/connect', 'dojo/dom-construct'],
function(ready, parser, style, registry, dom, event, construct){
//...etc
}
Run Code Online (Sandbox Code Playgroud)
这只是我正在处理的其中一个页面的一些模块.当然,有一种更好的,非破坏性的未来发布方式来访问这些方法,等等.我的意思是,我真的必须导入一个全新的模块才能使用byId()
吗?而另一个连接事件?最重要的是,通过必须在函数参数列表中分配变量名来创建的所有混乱只是看起来像这样的后退.
我想也许你require()
只在需要的时候才能使用模块,比如query
模块,但是如果我不止一次需要它,那么分配给它的变量很可能超出范围,我需要将它放入domReady!
或ready
调用. reaalllly .... ??!
这就是为什么我只能假设我对道场缺乏了解.
我真的已经查看并搜索并购买了书籍(虽然是AMD之前的一本),但这个图书馆真的让我为我的钱买单.我很欣赏任何人都能看到的光.
编辑示例
require(['dijit/form/ValidationTextBox'])
require(['dojo/ready', 'dojo/parser', 'dojo/dom-style', 'dijit/registry', 'dojo/dom', 'dojo/_base/connect', 'dojo/dom-construct'], function(ready, parser, style, registry, dom, event, construct){
/* perform some tasks */
var _name = new dijit.form.ValidationTextBox({
propercase : true,
tooltipPosition : ['above', 'after']
}, 'name')
/*
Let's say I …
Run Code Online (Sandbox Code Playgroud) 我有一个问题,理解为什么拒绝不通过承诺链传递,我希望有人能够帮助我理解为什么.对我而言,将功能附加到承诺链意味着我依赖于原始承诺的意图.这很难解释,所以让我先展示一下我的问题的代码示例.(注意:此示例使用Node和延迟节点模块.我使用Dojo 1.8.3进行了测试并得到了相同的结果)
var d = require("deferred");
var d1 = d();
var promise1 = d1.promise.then(
function(wins) { console.log('promise1 resolved'); return wins;},
function(err) { console.log('promise1 rejected'); return err;});
var promise2 = promise1.then(
function(wins) { console.log('promise2 resolved'); return wins;},
function(err) { console.log('promise2 rejected'); return err;});
var promise3 = promise2.then(
function(wins) { console.log('promise3 resolved'); return wins;},
function(err) { console.log('promise3 rejected'); return err;});
d1.reject(new Error());
Run Code Online (Sandbox Code Playgroud)
运行此操作的结果是此输出:
promise1 rejected
promise2 resolved
promise3 resolved
Run Code Online (Sandbox Code Playgroud)
好的,对我来说,这个结果没有意义.通过附加到这个承诺链,每个意味着它意味着它将取决于d1的成功解决和结果传递到链.如果promise1中的promise没有收到wins值,而是在其错误处理程序中得到一个错误的值,那么链中的下一个promise怎么可能调用其成功函数?它无法将有意义的值传递给下一个promise,因为它本身并没有获得值.
我可以用不同的方式描述我在想的是:有三个人,John,Ginger和Bob.约翰拥有一个小部件商店.姜进入他的商店,要求一袋各种颜色的小部件.他没有库存,所以他向他的经销商发送请求将他们运到他手中.与此同时,他给了Ginger一张雨检查,说他欠了她一袋小工具.Bob发现Ginger正在获取小部件并要求他在完成这些小部件后获得蓝色小部件.她同意并给了他一张纸条,说明她会.现在,约翰的经销商找不到他们的供应中的任何小部件,制造商也不再制作它们,所以他们告诉约翰,然后通知姜,她无法获得小部件.Bob怎么能在没有得到任何东西的情况下从Ginger获得蓝色小部件?
我在这个问题上的第三个更现实的观点是这个.假设我有两个我想要更新到数据库的值.一个是依赖于另一个的id,但是在我已经将它插入数据库并获得结果之前我无法获得id.最重要的是,第一个插入依赖于来自数据库的查询.数据库调用返回promises,我用它将两个调用链接成一个序列.
var promise = db.query({parent_id: value});
promise.then(function(query_result) {
var first_value = …
Run Code Online (Sandbox Code Playgroud)