javascript

java

python

c#

node.js

reactjs

android

php

c++

html

jquery

ruby-on-rails

css

git

ios

.net

sql

c

string

<img src="//i.stack.imgur.com/bk9VA.png" alt="" class="sponsor-tag-img" width="18" height="16"/>android

javascript - 在什么样的嵌套级别,组件应该从Flux中的Stores中读取实体?

我正在重写我的应用程序以使用Flux,我在从商店检索数据时遇到问题。 我有很多组件,它们很多。 其中一些很大(curator),有些小而简单(UserStore,UserAvatar)。

我一直在努力应对组件层次结构中应该从Stores读取数据的地方。
我尝试了两种极端的方法,我都不喜欢这两种方法:

所有实体组件都读取自己的数据

需要来自Store的某些数据的每个组件只接收实体ID并自行检索实体。
例如,curator通过UserStore,UserAvatarUserLink通过userId

这种方法有几个明显的缺点(在代码示例下讨论)。

var Article = React.createClass({
  mixins: [createStoreMixin(ArticleStore)],

  propTypes: {
    articleId: PropTypes.number.isRequired
  },

  getStateFromStores() {
    return {
      article: ArticleStore.get(this.props.articleId);
    }
  },

  render() {
    var article = this.state.article,
        userId = article.userId;

    return (
      <div>
        <UserLink userId={userId}>
          <UserAvatar userId={userId} />
        </UserLink>

        <h1>{article.title}</h1>
        <p>{article.text}</p>

        <p>Read more by <UserLink userId={userId} />.</p>
      </div>
    )
  }
});

var UserAvatar = React.createClass({
  mixins: [createStoreMixin(UserStore)],

  propTypes: {
    userId: PropTypes.number.isRequired
  },

  getStateFromStores() {
    return {
      user: UserStore.get(this.props.userId);
    }
  },

  render() {
    var user = this.state.user;

    return (
      <img src={user.thumbnailUrl} />
    )
  }
});

var UserLink = React.createClass({
  mixins: [createStoreMixin(UserStore)],

  propTypes: {
    userId: PropTypes.number.isRequired
  },

  getStateFromStores() {
    return {
      user: UserStore.get(this.props.userId);
    }
  },

  render() {
    var user = this.state.user;

    return (
      <Link to='user' params={{ userId: this.props.userId }}>
        {this.props.children || user.name}
      </Link>
    )
  }
});

这种方法的缺点:

  • 让100个组件可能订阅商店令人沮丧;
  • 由于每个组件独立检索数据,因此很难跟踪数据的更新方式和顺序。
  • 即使您可能已经拥有处于州的实体,您也不得不将其ID传递给子级,子级将再次检索它(否则会破坏一致性)。

所有数据在顶层读取一次并传递给组件

当我厌倦了追踪错误时,我试图将所有数据检索放在最顶层。 然而,事实证明这是不可能的,因为对于某些实体,我有几个级别的嵌套。

例如:

  • A curator包含UserStore个人,为该类别做出贡献;
  • curator可能有几个UserStore

因此,如果我想从curator级别的商店中检索所有数据,我需要:

  • curator检索文章;
  • curator检索所有文章的分类;
  • curator单独检索每个类别的贡献者;
  • 以某种方式将所有数据传递给组件。

更令人沮丧的是,每当我需要一个深度嵌套的实体时,我需要在每个嵌套级别添加代码以进一步传递它。

加起来

这两种方法都有缺陷。 我如何最优雅地解决这个问题?

我的目标:

  • 商店不应该有疯狂的订户数量。 如果父组件已经这样做,那么每个curator收听UserStore是愚蠢的。

  • 如果父组件已从商店检索了某个对象(例如curator),我不希望任何嵌套组件必须再次获取它。 我应该能够通过道具传递它。

  • 我不应该在顶层获取所有实体(包括关系),因为它会使添加或删除关系变得复杂。 每次嵌套实体获得新关系时,我都不想在所有嵌套级别引入新道具(例如,类别获得curator)。

trans by 2019-09-12T03:23:07Z

javascript - 在关闭弹出窗口中打开弹出窗口并刷新父页面

我在JavaScript中使用window.open打开了一个弹出窗口,我想在关闭这个弹出窗口时刷新父页面。(onclose event?)我该怎么做?

window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
trans by 2019-09-12T02:53:06Z

class - 如何使用JavaScript getElementByClass而不是GetElementById?

我正在尝试根据每个DIV的类别切换网站上某些DIV元素的可见性。 我正在使用基本的JavaScript代码段来切换它们。 问题是该脚本仅使用getElementByClass,因为JavaScript不支持getElementByClass。 不幸的是,我必须使用class而不是id来命名DIV,因为DIV名称是由我的XSLT样式表使用某些类别名称动态生成的。

我知道某些浏览器现在支持getElementByClass,但由于Internet Explorer不支持,我不想走那条路。

我发现脚本使用函数来按类获取元素(例如本页#8:[http://www.dustindiaz.com/top-ten-javascript/),]但我无法弄清楚如何 将它们与我的切换脚本集成在一起。

这是HTML代码。 DIV本身缺失,因为它们是在使用XML / XSLT加载页面时生成的。

主要问题:如何获取以下Toggle脚本以获取逐个元素而不是按ID获取元素?

<html>

<head>

<!--This is the TOGGLE script-->
<script type="text/javascript">
<!--
    function toggle_visibility(id) {
       var e = document.getElementById(id);
       if(e.style.display == 'block')
          e.style.display = 'none';
       else
          e.style.display = 'block';
    }
//-->
</script>

</head>

<!--the XML/XSLT page contents will be loaded here, with DIVs named by Class separating dozens of li's-->

<a href="#" onclick="toggle_visibility('class1');">Click here to toggle visibility of class 1 objects</a>

<a href="#" onclick="toggle_visibility('class2');">Click here to toggle visibility of class 2 objects</a>

</body>
</html>
trans by 2019-09-12T02:04:45Z

如何使用JQuery创建一个新的img标记,以及来自JavaScript对象的src和id?

我从基本的意义上理解JQuery,但我肯定是新手,并怀疑这很容易。

我在JSON响应(转换为对象)中得到了我的图像src和id,因此在responseObject.imgurl和responseObject.imgid中得到了正确的值,现在我想用它创建一个图像并将其附加到 一个div(我们称之为<div id="imagediv">。我有点卡在动态构建<img src="dynamic" id="dynamic"> - 我见过的大部分示例都涉及替换现有图像上的src,但我没有现有图像。

trans by 2019-09-12T01:32:51Z

javascript - 使用node.js postgresql模块的正确方法是什么?

我正在Heroku上编写一个node.js应用程序并使用pg模块。 我无法弄清楚为查询数据库所需的每个请求获取客户端对象的“正确”方法。

该文档使用如下代码:

pg.connect(conString, function(err, client) {
  // Use the client to do things here
});

但是你肯定不需要在每个使用数据库的函数中调用pg.connect吗? 我见过其他代码执行此操作:

var conString = process.env.DATABASE_URL || "tcp://postgres:1234@localhost/postgres";
var client = new pg.Client(conString);
client.connect();
// client is a global so you can use it anywhere now

我倾向于第二个选项,因为我相信Heroku的免费数据库实例无论如何仅限于一个连接,但是这样做有什么缺点吗? 在使用之前,我是否需要检查我的客户端对象是否仍然连接?

trans by 2019-09-11T23:40:10Z

javascript - 如何使用参数传递对函数的引用?

可能重复:
如何在JavaScript函数调用中预先设置参数? (部分功能应用)

我需要能够使用给定的参数集传递对函数的引用。

以下是传递不带参数的引用的示例:

var f = function () {
    //Some logic here...
};

var fr = f; //Here I am passing a reference to function 'f', without parameters
fr(); //the 'f' function is invoked, without parameters

现在我需要做的是传递相同的fr函数,但这次我需要将参数传递给引用。 现在,我可以使用匿名函数执行它,并使用新创建的函数内的参数调用fr()函数,如下所示:

var f = function () {
        //Some logic here...
    };

var fr = function (pars) {
    f(pars);
}; //Here I am creating an anonymous function, and invoking f inside it

fr({p : 'a parameter'}); //Invoking the fr function, that will later invoke the f function with parameters

但我的问题是,有没有办法直接引用fr函数参数为fr(),但没有将其封闭在匿名函数中?

如果没有参数(fr()),我需要分配给fr以使其可调用,以便在调用fr时执行f(1,2,3)?

[UPDATE]我跟着Jason Bunting回答这里关于Partial Function和他发布的JavaScript函数的答案正是我想要的。 这是解决方案:

function partial(func /*, 0..n args */) {
  var args = Array.prototype.slice.call(arguments).splice(1);
  return function() {
    var allArguments = args.concat(Array.prototype.slice.call(arguments));
    return func.apply(this, allArguments);
  };
}
trans by 2019-09-11T23:35:56Z

JavaScript基于原型的继承的好例子

我用OOP语言编程已超过10年,但我现在正在学习JavaScript,这是我第一次遇到基于原型的继承。 通过学习优秀的代码,我倾向于学得最快。 什么是正确使用原型继承的JavaScript应用程序(或库)的精心编写的示例? 你能描述(简要地)使用原型继承的方式/地点,所以我知道从哪里开始阅读?

trans by 2019-09-11T20:47:39Z

如何在javascript中重载函数?

经典(非js)重载方法:

function myFunc(){
 //code
}

function myFunc(overloaded){
 //other code
}

Javascript不会让同一个名称定义多个函数。 因此,这样的事情出现了:

function myFunc(options){
 if(options["overloaded"]){
  //code
 }
}

除了传递带有重载的对象之外,javascript中的函数重载是否有更好的解决方法?

传入重载会很快导致函数变得过于冗长,因为每个可能的重载都需要条件语句。 使用函数在这些条件语句内部完成//code可能会导致范围棘手的情况。

trans by 2019-09-11T20:34:29Z

Javascript:在关联数组中使用整数作为键?

当我创建一个新的javascript数组,并使用整数作为键时,该数组中每个直到整数的元素都被创建为undefined。例如:

var test = new Array();
test[2300] = 'Some string';
console.log(test);

将输出2298 undefined's和一个'Some string'。

我应该如何让javascript使用2300作为字符串而不是整数,或者我应该如何保持它不会实现2299空索引?

trans by 2019-09-11T18:40:36Z

javascript - 有没有理由使用同步XMLHttpRequest?

似乎大多数人都使用XMLHttpRequest执行异步请求,但显然有能力执行同步请求这表明可能有正当理由这样做。 那么这个有效的理由是什么呢?

trans by 2019-09-11T18:06:59Z

JavaScript相当于PHP的di

JavaScript中有“死”的东西吗? 我试过“休息”,但不起作用:)

trans by 2019-09-11T17:49:44Z

javascript - 忽略叠加图像上的鼠标交互

我有一个带有悬停效果的菜单栏,现在我想在其中一个菜单项上放置一个带圆圈和“一手拉”文字的透明图像。 如果我使用绝对定位将叠加图像放在菜单项上方,则用户将无法单击该按钮,并且悬停效果将不起作用。

有没有办法以某种方式禁用与此叠加图像的鼠标交互,以便菜单将继续像以前一样工作,即使它在图像下面?

编辑:

因为菜单是用joomla生成的,所以我无法调整其中一个菜单项。 即使我可以,我也不觉得javascript解决方案是合适的。 所以最后我用菜单项元素外面的箭头“标记”了菜单项。 不像我想要的那样好,但无论如何它都成功了。

trans by 2019-09-11T15:12:23Z

数组 - javascript forEach方法有什么用(地图不能做)?

我在map和foreach中看到的唯一区别是forEach正在返回一个数组,而forEach则没有。 但是,我甚至不理解forEach方法“func.call(scope, this[i], i, this);”的最后一行。 例如,不是“this”和“scope”指的是同一个对象而不是this[i]i指的是循环中的当前值?

我注意到在另一篇帖子中有人说“当你想根据列表的每个元素做某事时,请使用forEach。例如,你可能会在页面中添加内容。基本上,它非常适合你想要的”副作用“ 我不知道副作用是什么意思。

Array.prototype.map = function(fnc) {
    var a = new Array(this.length);
    for (var i = 0; i < this.length; i++) {
        a[i] = fnc(this[i]);
    }
    return a;
}

Array.prototype.forEach = function(func, scope) { 
    scope = scope || this; 
    for (var i = 0, l = this.length; i < l; i++) {
        func.call(scope, this[i], i, this); 
    } 
}

最后,这些方法在javascript中是否有任何实际用途(因为我们不更新数据库),除了操纵这样的数字:

alert([1,2,3,4].map(function(x){ return x + 1})); //this is the only example I ever see of map in javascript.

谢谢你的回复。

trans by 2019-09-11T14:42:07Z

语法 - 在JavaScript中声明函数

可能重复:
Javascript:var functionName = function(){} vs function functionName(){}

这两种声明函数的方式有什么区别?

function someFunc() { ... }

var someFunc = function() { ... }

我不是在技术意义上问。 我不是问哪个更易于阅读,或者哪种风格更受欢迎。

trans by 2019-09-11T14:12:20Z

c# - asp.net-mvc:js fi中的razor'@'符号

我有一个带有javascript函数的.csHtml-razor文件,它使用内部的@ C#函数作为ajax URL。
我想将该函数移动到从我的视图引用的.js文件。

问题是javascript不“知道”@符号并且不解析C#代码。
有没有办法用“@”符号从视图中引用.js文件?

trans by 2019-09-11T13:55:21Z

javascript - 什么是PastryKit框架?

我试图在PastryKit Javascript框架上找到任何可以获得的信息。 它似乎在iPhone用户指南中使用,该指南在Mobile Safari中显示在iPhone上,但我找不到任何文档或API。 如果要查看其中的操作,请打开Safari 4,将用户代理设置为iPhone 3(在“开发”菜单中)并查看指南。

总的来说,它似乎是一种编写类似于原生iPhone应用程序的HTML / CSS / Javascript应用程序的方法。

说到Javascript,我使用了JS Beautifier(我假设是)框架文件,它超过了3,400行! 美化,(我再次假设)他们的实施超过1,200行。

在CSS方面,我使用了Clean CSS(我再次假设)框架CSS,它出现了超过700行。 他们的执行情况低于500。

是否有人在PastryKit上拥有或知道在哪里找到任何信息,文档或API? 或者,任何人都可以弄清楚如何实现它?

trans by 2019-09-11T12:21:47Z

我怎么知道我正在使用哪个版本的Javascript?

我刚刚阅读有关Javascript 1.2的文档,但我想知道在最流行的浏览器中使用的是哪个版本的Javascript。

[http://www.tutorialspoint.com/javascript/javascript_nested_functions.htm]

trans by 2019-09-11T12:16:31Z

javascript - 在文本框中捕获TAB键

我希望能够在文本框中使用Tab键来标记四个空格。 现在的方式,Tab键将我的光标跳转到下一个输入。

是否有一些JavaScript会在文本框中冒出Tab键之前捕获Tab键?

据我所知,某些浏览器(即FireFox)可能不允许这样做。 像Shift + Tab或Ctrl + Q这样的自定义键组合怎么样?

trans by 2019-09-11T10:36:45Z

性能 - 分析javascript执行的最佳方法是什么?

是否有一个很好的javascript探查器? 我知道firebug对分析代码有一些支持。 但我想确定较长时间的统计数据。想象一下,您正在构建大量的JavaScript代码,并且您想要确定代码中的实际瓶颈。 首先,我想查看每个javascript函数和执行时间的配置文件统计信息。 接下来将包括DOM函数。 这与减慢渲染树上的操作的动作相结合将是完美的。 如果性能在我的代码,DOM准备或渲染树/视觉更新中被杀死,我认为这会给人留下好印象。

有什么东西接近我想要的东西吗? 或者什么是最好的工具来实现我所描述的最多? 它是一个自编编译器加上由配置文件功能增强的javascript引擎吗?

trans by 2019-09-11T09:34:40Z

javascript - new Date()在Chrome和Firefox中的工作方式不同

我想通过javascript将日期字符串转换为'2013-02-27T17:00:00',请使用下面的代码:

var date = new Date('2013-02-27T17:00:00');
alert(date);

'2013-02-27T17:00:00'是来自服务器的JSON对象的UTC时间。

但上述代码的结果在Firefox和Chrome之间有所不同:

Firefox返回:

Wed Feb 27 2013 17:00:00 GMT+0700 (SE Asia Standard Time)

Chrome返回:

Thu Feb 28 2013 00:00:00 GMT+0700 (SE Asia Standard Time) 

这是不同的1天,我期望的正确结果是Chrome的结果。

演示代码:[http://jsfiddle.net/xHtqa/2/]

如何解决这个问题以从两者中获得相同的结果?

trans by 2019-09-11T07:32:36Z

上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 下一页 共332页