小编jtf*_*ank的帖子

Angularjs - 如何在服务中设置模块值?

我有一个Angular应用程序的以下服务模块.

angular.module('rs.services', [])
  .value('uid', null)

  .factory('login', ['$http', 'uid', function($http, uid) {
    return function(user, pass) {
      var p = $http.post('/login', {"user": user, "pass": pass})
        .success(function(data, status, headers, config) {
          // set uid
        })
        .error(function(data, status, headers, config) {
          // do something
        });

      return p;
    }
  }]);

  // a service that uses uid to authenticate the request
  .factory('userPrefs' ['$http', 'uid', function($http, uid) {
    return function() {
      return $http.post('/user/prefs', {"uid": uid});
    }
  }]);
Run Code Online (Sandbox Code Playgroud)

用户登录后,该login服务返回唯一的会话ID,我想设置模块的uid值以供其他服务调用参考.

我很确定上面的代码不起作用,因为我不能在模块的配置阶段使用值作为依赖项.如何设置服务中的uidlogin并在模块内的其他服务中访问它,或者如果不可能,我如何创建可由这些服务设置/获取的值?

angularjs angularjs-service

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

AngularJs - ngRepeat,带有一个返回一个新对象的过滤器

我正在尝试将转换应用于我的过滤器中的对象,这会导致返回一个新对象数组.这是因为我想在应用变换后过滤对象并显示变换的结果.但是,我最终得到了一个无限的摘要,因为我显示的对象与我输入的对象不同(比较它们时$$ids).我想解决这个问题如下:

  1. 使用跟踪表达式track by item.id,并将原始对象分配ids给每个转换的对象.虽然我的所有对象目前都有id,但这似乎是一个坏主意,因为它使得过滤器不那么通用 - 原始对象必须具有id,转换不能设置id(因为它将被覆盖)等.

  2. 将原始对象分配$$id给已转换的对象.这似乎是hackish,基于我的理解$$id应该是只读的.

  3. 根据转换过滤的结果返回原始对象的子集.这可能会导致性能问题,因为需要在过滤器和显示表达式中应用转换,并且我必须循环回转换/过滤的项目以选择要返回的正确原始项目.

这是过滤器:

listModule.filter('ui.filter.transformFilter',
                 ['$filter',
                  '$id',
                   function($filter, $id)
  {
    var Filter = $filter('filter');
    return function(objects, transformer, expression) {
      // precondition- we need a list of objects
      if (!_.isArray(objects)) {
        return objects;
      }

      var transformed = [];
      for (var i = 0; i < objects.length; i++) {
        transformed[i] = transformer(objects[i]);
      }

      return filtered = Filter(transformed, expression);
    }                  
  }]
); …
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-ng-repeat angularjs-filter

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

如果目录为空,我如何跳过grunt任务

我正在使用grunt-contrib concatuglify模块来处理一些javascript.目前,如果src/js/为空,它们仍将创建一个(空)concat'd文件,以及缩小版本和源映射.

我想src/js/在继续之前检查文件夹是否为空,并且如果是,则任务应该跳过(不会失败).任何想法如何做到这一点?

gruntjs grunt-contrib-concat grunt-contrib-uglify

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

C#Class同时是IEnumerable和IEnumerator.这有什么问题?

我有一个名为GenericPermutations的类,它既是可枚举的又是枚举器.它的工作是获取一个有序的对象列表,并按顺序迭代它们的每个排列.

例如,此类的整数实现可以迭代以下内容:

GenericPermutations<int> p = new GenericPermutations<int>({ 1, 2, 3 });
p.nextPermutation(); // 123
p.nextPermutation(); // 132
p.nextPermutation(); // 213
// etc.
Run Code Online (Sandbox Code Playgroud)

所以它的可枚举性就是它包含了你可以枚举的事物的"列表".它也是一个普查员,因为它的工作涉及寻找下一个排列.

问题:我目前正在尝试将IEnumerator和IEnumerable与这个类集成,在我看来它应该是两者(而不是使用子类作为IEnumerable).到目前为止,我已经避免了通过在GetEnumerator方法中传递新的GenericPermutation对象来尝试从中获取两个枚举器的问题.

这是一个坏主意吗?还有什么我应该考虑的吗?

c# ienumerable ienumerator enumeration

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

如何自动突出显示vim中的单词?

无论文件类型如何,我都要突出显示某个单词.在我的.vimrc中我添加了:

highlight link notes todo
syntax match notes contained "TODO"
syntax match notes contained "NOTE"
syntax match notes contained "!!!"
syntax match notes contained "???"
Run Code Online (Sandbox Code Playgroud)

注意:我也尝试过syntax match notes "TODO"(没有包含).

不幸的是,我实际上无法突出显示任何这些关键字.

编辑:

我将代码移动到.vim/after/syntax/html.vim以便应用语法.它目前看起来像:

syntax match todo contained "\<\(TODO\|NOTE\|!!!\|???\)"
Run Code Online (Sandbox Code Playgroud)

现在,当我输入时,:syntax我得到了Todo xxx match /\<\(TODO\|NOTE\|!!!\|???\)/ contained

但是,当我尝试在其中键入带有TODO的html注释时(即<!-- TODO something -->)不应用突出显示.

另外,我是否必须.vim/after/syntax/file_type.vim为每种文件类型创建一个,或者我可以以某种方式应用它?

vim syntax-highlighting

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

从模板编译HTML的程序

我正在开发一个只使用HTML,CSS和JS的网站(不需要后端).这是一个简单的网站,其主要目的是提供信息.我有一个标准模板用于所有页面(标题,内容区域,页脚).现在,我必须将其复制并粘贴到每个页面中,并逐页手动更新对它的任何更改.

那里有什么好的节目可以让我:

  • 设置模板
  • 分别为每个页面编写内容代码
  • 通过将内容插入模板(在指定点)编译每个页面
  • 将编译输出到第三个文件

对于与SASS类似的东西的奖励积分,我可以让程序观察更改目录并将文件自动编译到另一个目录中.

允许我在多个部分添加内容的内容的奖励积分.

我想重申一下 - 我不想使用后端语言(例如PHP或Django)来将页面拼接在一起.我正在研究的网站不需要这样做,它会对性能和可维护性产生负面影响.

html compilation

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

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

如何测试由对 php 的多个 ajax 请求创建的竞争条件?

我正在使用 PHP 在数据库中创建一些对象。有时,如果用户在创建对象时请求对象,他们可以看到部分创建的对象(主数据库条目存在,但尚未插入所有子对象)。我最近实施了一个修复,我的代码只会在对象完全创建后通过向 db 条目添加“创建”标志来提供该对象。

我该如何测试?我正在使用 phpunit。我看到的两个问题是,我需要并行线程来同时进行创建和获取请求,并且我需要确保时机正确,以便我可以实际测试竞争条件(而不仅仅是获取对象完全创建后)。我希望我的测试看起来像这样,但我愿意接受建议:

  1. 线程1:创建对象
  2. 线程 2:尝试在对象完全创建之前获取它(应该返回错误)
  3. 线程 1:在创建后获取对象(应该可以工作)

php testing phpunit race-condition

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

Angular Directive ng-click Not Working

Plunker

我有一个外部控制器,在其视图内包含一个指令.该指令获取一个过程点列表并生成链接,您可以在其中选择每个过程点.它在链接函数中正确设置HTML,但链接的ng-click操作不起作用.

有任何想法吗?:)

非掠夺性代码

HTML

<!DOCTYPE html>
<html>

  <head><link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet">
        <script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.min.js"></script>
    <script src="script.js"></script>
  </head>

  <body ng-app="app">
    <div ng-controller="widget">
      <process stages="production" at="productionAt"></process>
    </div>
  </body>

</html>
Run Code Online (Sandbox Code Playgroud)

JS

angular.module('app', ['app.directives', 'app.controllers']);

angular.module('app.controllers', [])
 .controller('widget', function($scope) {
    var selectStage = function () {
      alert(this.label + " selected.");
      $scope.processAt = this;
    }

    $scope.production = [
        {label: "Starting", select: selectStage}
      , {label: "Fermenting", select: selectStage}
      , {label: "Pouring",     select: selectStage}
      , {label: "Beer!",  select: selectStage}
    ];

    $scope.productionAt = $scope.production[0];
 });

angular.module('app.directives', []) …
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-directive angularjs-ng-click

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

使用JQuery从JSON数组解析第N个项的语法

我见过许多JQuery示例,它们使用$ .each来循环遍历JSON数组.但是,需要做的是单独抓取项目0 - 3并将它们传递给另一个名为"搜索"的函数.这就是我想出来的.

        $.getJSON("http://localhost:61741/binggame/play?cat=Body%20Parts", {
        tags: "English",
        tagmode: "any",
        format: "json"

    },


function (data) {

    Search(data.items[0], "Box1_Image");
    Search(data.items[1], "Box2_Image");
    Search(data.items[2], "Box3_Image");
    Search(data.items[3], "Box4_Image");
});
Run Code Online (Sandbox Code Playgroud)

我很确定data.items []不是正确的语法.

这是我的JSON示例:

{"nouns":[
    {
        "ID":26,
        "Category":"Body Parts",
        "English":"muscle",
        "Pinyin":"gei yUk",
        "Image1":null,
        "Audio1":null
    },
    {
        "ID":27,
        "Category":"Body Parts",
        "English":"neck",
        "Pinyin":"gen",
        "Image1":null,
        "Audio1":null
    },
    {
        "ID":28,
        "Category":"Body Parts",
        "English":"nose",
        "Pinyin":"bei",
        "Image1":null,
        "Audio1":null
    },
    {
        "ID":29,
        "Category":"Body Parts",
        "English":"rib",
        "Pinyin":"lat gwt",
        "Image1":null,
        "Audio1":null
    }
]}
Run Code Online (Sandbox Code Playgroud)

对于此示例,data.items [0]的值应为"muscle",data.items [1]应为"neck",data.items [2]应为"nose",data.items [3]应为是"肋骨".

有人能指出我做错了什么吗?

javascript jquery

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

在C#中的多维数组中设置内部数组

我创建了一个多维数组,并希望将整个内部数组设置为等于单独的(单维)数组.除了遍历数组中的每个位置和设置外,我该怎么做grid[row][val] = inputNums[val]

int[,] grid = new int[20,20];

// read a row of space-deliminated integers, split it into its components
// then add it to my grid
string rowInput = "";
for (int row = 0; (rowInput = problemInput.ReadLine()) != null; row++) {
    int[] inputNums = Array.ConvertAll(rowInput.Split(' '), (value) => Convert.ToInt32(value))
    grid.SetValue(inputNums , row); // THIS LINE DOESN'T WORK
}
Run Code Online (Sandbox Code Playgroud)

我得到的具体错误是:

"争议异常处理:数组不是一维数组."

c# arrays jagged-arrays

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