小编plu*_*us-的帖子

Angular:重构控制器将$ routeParams转为undefined

我在不同的模块中分割我的角度代码,我正面临着一个问题.我想我不理解服务注入的内部.

从定义为全局函数的控制器开始

angular.module('foo', []);
function fooCtrl($scope, $routeParams) {
Run Code Online (Sandbox Code Playgroud)

以声明形式将它们作为模块的一部分

angular.module('foo',[]).
controller(['fooCtrl', function($scope, $routeParams) {
Run Code Online (Sandbox Code Playgroud)

最后我丢失了$ routeParams服务(未定义).我是否需要将明确的$ routeParams注入模块?我该怎么做?

angularjs

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

猫鼬在储蓄前受到影响

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
var Cat = mongoose.model('Cat', { name: String });

var kitty = new Cat({ name: 'Zildjian' });
console.log(kitty);
kitty.save();
console.log(kitty);
Run Code Online (Sandbox Code Playgroud)

这个输出:

{ name: 'Zildjian', _id: 523194d562b0455801000001 } 两次

我已经尝试通过在超时后延迟保存,但它是相同的,它指向_id被设置在new Cat而不是.save()

这是因为mongodb还是mongoose,为什么在实际持久性之前设置_id?

mongoose mongodb node.js

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

couchdb很多很头疼

所以我已经阅读了关于在couchdb上翻译关系的内容,但我仍然无法想出一个合适的地图函数来表示多对多.

想象一下你有一些文档(注意这是一个例子,而不是实际的模型):

{name:"whatever1", from:"A"}
{name:"whatever2", from:"A"}
{name:"whatever3", to:"B"}
{name:"whatever4", to:"C"}
Run Code Online (Sandbox Code Playgroud)

以及定义关系的其他一些类型的文档:

{name:"link1", link: true, from: "A", to: "B"}
{name:"link2", link: true, from: "A", to: "C"}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用正确的函数来返回组合列表:

{ name: "link1",
  froms: ["whatever1", "whatever2"],
  tos: ["whatever3"]
}
Run Code Online (Sandbox Code Playgroud)

有谁知道如何这样的地图,我应该改变我的文档结构吗?如果您只想链接指南,请不要发布.

couchdb

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

Jquery函数式编程风格

是否有一种更优雅的方式来编写这种函数而无需初始化数组:

function getStuff () {
    var some_array= [];

    $("#some-id ul li span.key").each(function() {
          some_array.push($(this).text());
    });

    return some_array;
}
Run Code Online (Sandbox Code Playgroud)

javascript jquery

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

Mongoose:所有保存和更新方法的中间件

我一直在使用跟随API的mongoose编写CRUD应用程序:

  • 创建: save()
  • 更新: findByIdAndUpdate()

我想对这两种方法都有一个中间件.我试过pre('save', ...) pre('validate', ...)但他们只为创建路线开火.

是否有其他适用于两者的东西或我是否需要重构更新路由以使用save()API?

mongoose

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

角度输入限制为 1 个字符

我想知道为什么在此示例中每次输入不能输入多个字符:

http://jsfiddle.net/R3uY4/2/

<div ng-app>
  <div ng-controller="ctrl">
     <table>
            <tr>
                <td ng-repeat="f in foo">
                    <input ng-model="foo[$index]" style="width:60px" ></input>
                </td>
            </tr>
        </table>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

js:

function ctrl($scope) {
  $scope.foo = [];
    for (var i=0; i<5; i++) {
        $scope.foo.push('');
    }  
}
Run Code Online (Sandbox Code Playgroud)

angularjs

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

Jade,Angular和ngSwitch

ng-switch由于某种原因,我有一个问题,即使模型更新,视图也不会切换.它总是显示默认视图(仅用于测试),一切都应该在完整的HTML中正常工作,如此处测试http://plnkr.co/edit/fKlPKy?p=preview所以我想这是来自玉:

    .btn-group(data-toggle='buttons-radio', style='float:right; margin-right:20px;')
      .btn(ng-model='displayType', btn-radio="'grid'")
        i.icon-th
      .btn(ng-model='displayType', btn-radio="'list'")
        i.icon-align-justify

  .switch(ng-switch, on='displayType')
    .switch(ng-switch-when='grid')
      include gridView
    .switch(ng-switch-when='list')
      include listView
    pre(ng-switch-default) {{displayType}}
Run Code Online (Sandbox Code Playgroud)

我可以在默认视图中看到,displayType根据所选的收音机,它已正确更新为"网格"或"列表"

更新了该区域的完整HTML:

<div ng-controller="cardCtrl" class="container ng-scope">
  <div class="card-list-header">
    <div class="card-search">
      <div align="center" class="input-append">
        <input type="text" ng-model="searchterm" placeholder="Type in filter criteria and press Enter..." ui-keypress="{13:'keypressCallback($event)'}" class="input-xxlarge ng-valid ng-dirty"><span ng-click="addCard()" class="add-on">+</span>
      </div>
    </div>
    <div data-toggle="buttons-radio" style="float:right; margin-right:20px;" class="btn-group">
      <div ng-model="displayType" btn-radio="'grid'" class="btn ng-pristine ng-valid active"><i class="icon-th"></i></div>
      <div ng-model="displayType" btn-radio="'list'" class="btn ng-pristine ng-valid"><i class="icon-align-justify"></i></div>
    </div>
  </div>
  <div ng-switch="ng-switch" …
Run Code Online (Sandbox Code Playgroud)

angularjs angular-ui pug

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

在Javascript中,如何合并对象数组?

var array1 = [{ "name" : "foo" , "age" : "22"}, { "name" : "bar" , "age" : "33"}];
var array2 = [{ "name" : "foo" , "age" : "22"}, { "name" : "buz" , "age" : "35"}];
Run Code Online (Sandbox Code Playgroud)

什么是最快的方式(没有重复,名称是标识符):

[{ "name" : "foo" , "age" : "22"}, { "name" : "bar" , "age" : "33"}, { "name" : "buz" , "age" : "35"}];
Run Code Online (Sandbox Code Playgroud)

有和没有jquery如果可能的话.

javascript arrays

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

Angular:$ resource更新仅在第二次调用时触发PUT请求

我有一个自定义更新方法的资源:

angular.module('user.resources', ['ngResource']).
factory('User', function($resource) {
  var User = $resource('/user/:id', {}, {
    update: {
      method: 'PUT'
    }
  });

  User.prototype.update = function(cb) {
    console.log('foo');
    return User.update({
      id: this._id
    }, angular.extend({}, this, {
      _id: undefined
    }), cb);
  };
Run Code Online (Sandbox Code Playgroud)

我通过范围将此资源传递给自定义指令:

directive('avatarUpload', function($http) {
  return {
    restrict: 'E',
    scope: {
      model: '='
    }, ...
Run Code Online (Sandbox Code Playgroud)

我在btn点击中调用指令控制器中的更新方法:

$scope.model.update(function() {
  console.log('bar');
});
Run Code Online (Sandbox Code Playgroud)

令我困惑的行为是,第一次打印'foo'而不是'bar'时点击按钮,再次点击它打印'bar',然后点击'foo'.再点击总是打印'bar'然后'foo'.

PUT请求仅从第二次点击和之后的点击,而不是从第一次点击.

注意:我一直在控制器中使用该资源更新方法,直到尝试从指令调用它.我正在使用angular 1.1.4我执行此资源传递,因为我希望该指令适用于不同类型的资源.

angularjs angularjs-directive angularjs-scope

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