小编Sco*_*ger的帖子

Angularjs过滤器不为空

尝试过滤掉具有非空属性的项目因此:

var details = [{name:'Bill', shortDescription: null}, {name:'Sally', shortDescription: 'A girl'}]
Run Code Online (Sandbox Code Playgroud)

我想只展示一个李; 莎莉的那一个.这是我试过没有成功的

<ul>
<li ng-repeat="detail in details | filter:{shortDescription:'!'}">
<p>{{detail.shortDescription}}</p>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

知道如何在不创建自定义过滤器的情况下做到这一点吗?或者即便如此,自定义过滤器会是什么样子?

javascript angularjs angularjs-filter

69
推荐指数
3
解决办法
6万
查看次数

Angularjs - 在加载DOM之前隐藏内容

我在Angularjs中遇到一个问题,在我的数据从服务器返回之前,我的HTML中有一个闪烁.

这是一个展示问题的视频:http://youtu.be/husTG3dMFOM - 注意#| 和右边的灰色区域.

我尝试过ngCloak没有成功(尽管ngCloak确实阻止括号出现在承诺中)并且想知道在Angular填充HTML之前隐藏内容的最佳方法.

我让它在我的控制器中使用此代码:

var caseCtrl = function($scope, $http, $routeParams) {
    $('#caseWrap').hide(); // hides when triggered using jQuery
    var id = $routeParams.caseId;

    $http({method: 'GET', url: '/v1/cases/' + id}).
        success(function(data, status, headers, config) {                   
            $scope.caseData = data;

            $('#caseWrap').show(); // shows using jQuery after server returns data
        }).
        error(function(data, status, headers, config) {
            console.log('getCase Error', arguments);
        });
}
Run Code Online (Sandbox Code Playgroud)

...但我一次又一次地听不到从控制器操纵DOM.我的问题是如何使用指令实现这一目标?换句话说,在从服务器加载所有内容之前,如何隐藏指令所附加的元素?

angularjs

63
推荐指数
3
解决办法
7万
查看次数

AngularJS - 选择值返回"?number:x?" 来自范围变量

尝试获取select元素的初始值而不是填充值,它会添加一个奇怪的字符串,如下图所示:

在此输入图像描述

这是JavaScript代码:

 function appCtrl($scope){
        $scope.teams = [
            {teamId: 10, teamName: 'Foo'},
            {teamId: 20, teamName: 'Bar'},
            {teamId: 30, teamName: 'Steve'},
            {teamId: 40, teamName: 'Jobs'},
            {teamId: 50, teamName: 'Macs'}
        ];

        $scope.filters = {
            teamIdSelected: 20
        };
  }
Run Code Online (Sandbox Code Playgroud)

这是HTML:

<div ng-app ng-controller="appCtrl"> 
    <select class="small" ng-model="filters.teamIdSelected">
        <option ng-repeat="team in teams" value="{{team.teamId}}">{{team.teamName}}</option>
    </select>
Run Code Online (Sandbox Code Playgroud)

这是一个jsbin来演示:http://jsbin.com/EKOpAFI/1/edit

我也试过在这里使用难以置信的文档记录的选择元素,但我不能让它以那种方式工作,无论我的teamId是值,teamName是标签.它总是希望将数组的索引作为值.

任何帮助将不胜感激.

javascript angularjs

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

Angularjs $ resource - 无法将数组作为参数之一传递

我试图从AngularJS传递一个数组到我们的API.但是,在发送时,重复参数而不是作为数组发送.这是我的代码:

    angular.module('sigApp.services', ['ngResource']).
    // Fetch cases from server
    service('caseFetcher', ['$resource', function($resource) {
        this.getCases = function(params) {
            console.log('params: ',params);
            return $resource('/v1/cases/', params);
        };
    }]);
Run Code Online (Sandbox Code Playgroud)

以下是生成的URL(缩写):/ v1/cases?status = OPEN&status = HELD

这是我想要的URL:/ v1/cases?status%5B0%5D = OPEN&status%5B1%5D = HELD(又名?status [0] = OPEN&status 1 = HELD)

以下是上述代码中记录的对象的屏幕截图: 在此输入图像描述

我已经尝试了最新版本的angularjs(1.2rc1)并尝试了Restangular插件.无论我尝试什么,我都会多次传递params,而不是数组格式.我们的API无法使用相同键的多个值.

有任何想法吗?

编辑:当另一个问题(AngularJS:ngResource和对象数组作为URL的参数)完全不同时,有几个人将此标记为重复.另一个问题涉及通过POST发送一个数组,我正在尝试做一个GET请求(设置为isArray:默认为true),我想只传递一个数组的参数,这个答案似乎没有帮我.那么有人可以帮忙吗?

更新我在下面回答了我自己的问题但是作为评论我正在为遇到此问题的任何人提供更多信息.我们正在使用Play Framework 2.1作为后端.我无法生成我最初在上面发布的编号数组,但能够让它只是一个非索引数组,所以这是最终生成的URL:

/ v1/cases?status%5B%5D = OPEN&status%5B%5D = HELD(又名?status [] = OPEN&status [] = HELD)

希望这有助于其他人

playframework-2.0 angularjs

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

D3中的矩形描边模糊

我正在尝试使用D3在SVG中绘制一个带有虚线强的矩形但是当我这样做时,顶部和底部的虚线是模糊的.这是我的代码:

var width = 400,
        height = 400;

var svg = d3.select('body')
        .append('svg')
            .attr('width', width)
            .attr('height', height)
        .append('g')
            .attr('transform', 'translate('+height/2+','+width/2+')');

svg.append('rect')
    .attr('width', '185')
    .attr('height', '45')
    .attr('x', -height/2+185/2)
    .attr('y', -width/2+10)
    .attr('fill', 'rgba(0,0,0,0)')
    .attr('stroke', '#2378ae')
    .attr('stroke-dasharray', '10,5')
    .attr('stroke-linecap', 'butt')
    .attr('stroke-width', '3')
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/sigscotty/9H9PX/

以下是浏览器中的内容:

在此输入图像描述

任何方式让顶部和底部看起来像两侧?

svg d3.js

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

JavaScript量角器(Selenium)验证输入是否集中

我正在尝试测量元素是否在量角器中使用selenium webdriver进行聚焦.这是在AngularJS加载之前,所以我必须使用驱动程序,如下所示:

var ptor = protractor.getInstance(),
    driver = ptor.driver;
Run Code Online (Sandbox Code Playgroud)

我还需要知道如何使测试等到输入被聚焦.我必须等到一个模型被触发,所以输入没有聚焦半秒,如下所示:

window.setTimeout(function(){
  $("input#email").focus();
}, 500);
Run Code Online (Sandbox Code Playgroud)

知道如何在500ms后验证输入是否有焦点?

selenium protractor

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

指纹未在Heroku中授权的密钥

尝试像其他许多人一样,让我的应用程序推送到Heroku,但不断收到此错误

$ heroku login
Enter your Heroku credentials.
Email: my@email.com
Password (typing will be hidden): 
Found existing public key: /Users/scotty/.ssh/id_rsa.pub
Uploading SSH public key /Users/scotty/.ssh/id_rsa.pub... done
Authentication successful.
$ git push heroku master

 !  Your key with fingerprint xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx is not authorized to access todolist.

fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

我完成了Heroku页面上的所有步骤,我在这些类似的问题中尝试了大多数建议的修复:

您的指纹密钥....无权访问... myapp.远程端意外挂断了.HEROKU,GIT CLONE

当我尝试将最新更改推送到Heroku时,为什么我的密钥没有授权指纹?

由于关键指纹无法推送到Heroku

我为heroku添加了一个新密钥,尝试使用ssh-add -D命令删除所有密钥,从Heroku中删除所有密钥,无论我尝试什么,我仍然会得到同样的错误.

我只有一个Heroku帐户,因此多帐户问题不是问题.我现在只有一个ssh密钥,我在macbook上用于github.

有人在上面的答案中没有提到任何建议吗?

提前致谢.

git heroku

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

D3树布局 - 具有子节点的子节点之间的距离

尝试在D3中获取树布局,以使子节点与子节点更加靠近.这是代码:

var margin = {
            top: 20,
            right: 120,
            bottom: 20,
            left: 120
    },
    width = 960 - margin.right - margin.left,
    height = 800 - margin.top - margin.bottom;

    var i = 0,
            duration = 750,
            rectW = 185,
            rectH = 45;

    var tree = d3.layout.tree()
        .nodeSize([200, 40]);

    var diagonal = d3.svg.diagonal()
        .projection(function (d) {
        return [d.x + rectW / 2, d.y + rectH / 2];
    });

    var svg = d3.select("#body").append("svg").attr("width", 1000).attr("height", 1000)
        .call(zm = d3.behavior.zoom().scaleExtent([0,1]).on("zoom", redraw))
        .append("g")
        .attr("transform", "translate(" + …
Run Code Online (Sandbox Code Playgroud)

javascript d3.js

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