小编Jon*_*nah的帖子

Angular.js:$ eval如何工作?为什么它与vanilla eval不同?

我很好奇$scope.$eval你经常在指令中看到你,所以我查看了源代码,发现以下内容rootScope.js:

  $eval: function(expr, locals) {
    return $parse(expr)(this, locals);
  },
Run Code Online (Sandbox Code Playgroud)

$parse似乎是由ParseProviderin 定义的parse.js,它似乎定义了它自己的某种迷你语法(文件长900行).

我的问题是:

  1. 究竟在$eval做什么?为什么它需要自己的迷你解析语言?

  2. 为什么不使用普通的旧JavaScript eval

angularjs

148
推荐指数
2
解决办法
12万
查看次数

在ng-repeat中使用指令,以及范围'@'的神秘力量

如果您希望在工作代码中看到问题,请从这里开始:http://jsbin.com/ayigub/2/edit

考虑这几乎相同的方式来编写一个简单的方法:

app.directive("drinkShortcut", function() {
  return {
    scope: { flavor: '@'},
    template: '<div>{{flavor}}</div>'
  };
});

app.directive("drinkLonghand", function() {
  return {
    scope: {},
    template: '<div>{{flavor}}</div>',
    link: function(scope, element, attrs) {
      scope.flavor = attrs.flavor;
    }
  };
});
Run Code Online (Sandbox Code Playgroud)

当它们自己使用时,这两个指令的工作和行为相同:

  <!-- This works -->
  <div drink-shortcut flavor="blueberry"></div>
  <hr/>

  <!-- This works -->
  <div drink-longhand flavor="strawberry"></div>
  <hr/>
Run Code Online (Sandbox Code Playgroud)

但是,在ng-repeat中使用时,只有快捷方式版本有效:

  <!-- Using the shortcut inside a repeat also works -->
  <div ng-repeat="flav in ['cherry', 'grape']">
    <div drink-shortcut flavor="{{flav}}"></div>
  </div>
  <hr/>

  <!-- HOWEVER: using the …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angularjs-directive

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

我怎样才能使这个try_files指令工作?

我试图了解nginx的try_files指令是如何工作的.nginx正在我的服务器上运行并提供位于的默认页面/usr/share/nginx/html/index.html.

但是,我有一个简单的html页面位于文件系统中/var/www/test/index.html.以下配置文件未导致该文件被提供.我想理解为什么不这样做,以及我需要做出哪些改变才能实现.

这是defualt.conf的相关部分:

server {
    listen       80;
    server_name  localhost;

    root  /var/www;
    try_files /test/index.html /;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
Run Code Online (Sandbox Code Playgroud)

nginx

48
推荐指数
1
解决办法
10万
查看次数

在Ruby中是否有内置的二进制搜索?

我正在寻找一个内置的Ruby方法,它具有与index二进制搜索算法相同的功能,因此需要预先排序的数组.

我知道我可以编写自己的实现,但根据" Ruby #index Method VS Binary Search ",索引使用的内置简单迭代搜索比纯Ruby版本的二进制搜索更快,因为内置方法是用C写的.

Ruby是否提供任何进行二进制搜索的内置方法?

ruby binary-search

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

在XCode6中打开时,Swift教程"GuidedTour.playground"不执行任何操作

这个介绍Swift的苹果开发者页面有一个链接3段,用于下载"GuidedTour.playground"文件,该文件应该允许您以交互方式跟随教程.但是,当我在XCode6 Beta中打开这个文件时(我正在使用2个月大的MB专业版,OSX 10.9.3),我只看到这个屏幕,它不响应鼠标点击或其他任何事情(注意:"GuidedTour. playground"是前景窗口,后面有另一个默认的游乐场窗口):

惰性引导窗口

我怎样才能使它工作?

奖金问题:可能不相关,但是当我玩默认游乐场时,我无法弄清楚println语句应该输出到哪里.它们不会显示在实时右侧窗格中,也不会显示在底部的控制台中.

xcode swift

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

Vim CtrlP插件:手动设置root搜索目录?

我已经阅读了文档,但无法弄清楚这是否可行.

我想保留默认设置g:ctrlp_working_path_mode = 2,但是如果需要,我希望能够手动覆盖当前窗口中所有缓冲区的设置.

具体来说,我想发出一个ctrlp命令或更改设置根搜索目录的ctrlp配置变量,这样就可以将该目录用于所有将来的搜索,无论我在哪个缓冲区中.

奖金问题:是否可以设置两个根目录,以便搜索它们并组合结果?

谢谢!

vim vim-plugin

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

列出使用double []的RAM的<Double>?

Java专家强调避免过早优化的重要性,而是专注于清洁OO设计.我试图在重写使用大量长元素(几百万)的程序的上下文中调和这个原则.似乎使用ArrayList会消耗大量原始数组long的内存的3倍,并且浪费那么多RAM似乎是我合理关注的问题.

我基于我在这里描述的 MemoryTestBench类进行的实验.我的测试和输出如下:

package memory;

import java.util.ArrayList;
import java.util.List;

public class ArrayListExperiment {

public static void main(String[] args) {

    ObjectFactory arrayList = new ObjectFactory() {
        public Object makeObject() {
            List<Long> temp = new ArrayList<Long>(1000);
            for (long i=0; i<1000; i++)
                temp.add(i);
            return temp;
        }
    };

    ObjectFactory primitiveArray = new ObjectFactory() {
        public Object makeObject() {
            long[] temp = new long[1000];
            for (int i=0; i<1000; i++)
                temp[i] = i;
            return temp;
        }
    };

    MemoryTestBench memoryTester = new MemoryTestBench();
    memoryTester.showMemoryUsage(primitiveArray);
    memoryTester.showMemoryUsage(arrayList);
} …
Run Code Online (Sandbox Code Playgroud)

java guava data-structures

20
推荐指数
3
解决办法
681
查看次数

用Curl计算服务器处理时间

我正在使用的卷曲请求时序信息--write-out所描述的选项,在这篇文章中.

以下是我的一个请求的示例输出:

        time_namelookup:  0.031
           time_connect:  0.328
        time_appconnect:  1.560
       time_pretransfer:  1.560
          time_redirect:  0.000
     time_starttransfer:  1.903
                        ----------
             time_total:  2.075
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何确定服务器处理请求的时间?答案是:

time_starttransfer - time-connect
Run Code Online (Sandbox Code Playgroud)

也就是说,从建立连接到服务器开始发送响应的时间?这似乎是正确的,但我想确定.

有关curl时序变量的详细信息,请访问:http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html

curl http

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

如何使用Gmail API访问我拥有的Gmail帐户?

我想将节点脚本作为cronjob运行,它使用Gmail的API来轮询我拥有的Gmail帐户.

我正在按照这些快速入门说明操作:

快速开始

我坚持第一步.在请求cron脚本的凭据时,它告诉我"无法从没有UI的平台访问用户数据,因为它需要用户交互才能登录":

在此输入图像描述

这些文档总体上令人困惑,并提到"服务帐户","OAuth"和其他内容 - 我无法分辨哪些适用于我的用例,哪些不适用.我使用了许多SaaS API,典型的工作流程是登录您的帐户,获取API密钥和密钥,并使用脚本中的API访问API.这似乎不是 Gmail API使用的范例,所以我很感激任何指导或指向更清晰指示的链接.

gmail gmail-api

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

innerHTML不可信:不总是同步执行

要查看操作中的问题,请参阅此jsbin.单击按钮会触发buttonHandler(),如下所示:

function buttonHandler() {
  var elm = document.getElementById("progress");
  elm.innerHTML = "thinking";
  longPrimeCalc();
}
Run Code Online (Sandbox Code Playgroud)

您可能希望此代码将div的文本更改为"思考",然后运行longPrimeCalc()一个需要几秒钟才能完成的算术函数.然而,这不是发生的事情.相反,"longPrimeCalc"首先完成,然后文本在运行完毕后更新为"思考",就好像两行代码的顺序相反.

看起来浏览器不会同步运行"innerHTML"代码,而是为它创建一个自己休闲执行的新线程.

我的问题:

  1. 导致这种行为的根本原因是什么?
  2. 如何让浏览器按照我期望的方式运行,即强制它在执行" longPrimeCalc()" 之前更新"innerHTML "?

我在最新版本的chrome中测试了这个.

javascript

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