小编Dan*_*nny的帖子

有条件地根据模型数据更改img src

我想使用Angular将模型数据表示为不同的图像,但在找到"正确"的方法时却遇到了一些麻烦.关于表达式的Angular API文档说不允许条件表达式......

简化很多,模型数据通过AJAX获取,并显示路由器上每个接口的状态.就像是:

$scope.interfaces = ["UP", "DOWN", "UP", "UP", "UP", "UP", "DOWN"]
Run Code Online (Sandbox Code Playgroud)

因此,在Angular中,我们可以使用以下内容显示每个接口的状态:

<ul>
  <li ng-repeat=interface in interfaces>{{interface}}
</ul>
Run Code Online (Sandbox Code Playgroud)

但是 - 我想展示一个合适的图像,而不是模型中的值.遵循这个一般想法的东西.

<ul>
  <li ng-repeat=interface in interfaces>
    {{if interface=="UP"}}
       <img src='green-checkmark.png'>
    {{else}}
       <img src='big-black-X.png'>
    {{/if}}
</ul>
Run Code Online (Sandbox Code Playgroud)

(我认为Ember支持这种类型的构造)

当然,我可以修改控制器以根据实际模型数据返回图像URL,但这似乎违反了模型和视图的分离,不是吗?

此SO Posting建议使用指令更改bg-img源.但后来我们回到把JS放在JS而不是模板中......

所有建议都赞赏.谢谢.

请原谅任何错别字

angularjs

70
推荐指数
4
解决办法
10万
查看次数

for循环中的闭包 - 以循环变量作为参数的回调

我在循环中使用jQuery"GET"从服务器获取几个结果.我想将循环索引作为固定参数包含在回调中,但它不起作用.

(我遵循了本文关于如何做的建议.)

但是,我在回调中得到的值完全不是我所期望的 - 而不是每个循环索引值,它总是等于索引的退出值.

即.这里的代码片段为每次回调执行打印出'16'.如何让它打印1,2,3 ...(我意识到订单可能不同,那很好)

除了下面的代码,我还尝试了几种方法来指定回调函数,例如.function(data, textStatus) { return test(data, textStatus, idx); }, 'text');等等

这应该怎么样?

function test(data, textStatus, siteNo)
{
    console.log("siteNo=" + siteNo);
}

function loadConfigLists()
{
    var siteReport;
    // retrieve site configuration
    jQuery.get("svGetSiteConfig.php", function(data, textStatus) 
    {
        // retrieve port configuration for all sites
        for (var idx=1; idx<=15; idx++)
        {
            var probeIP = siteConfigArray[idx].siteIP;
            if (probeIP != "" && probeIP != null)
            jQuery.get("svGetPortInfo.php?svSiteIpAddr=" + probeIP+"&s="+idx, 
                    function(data, textStatus) { test(data, textStatus, idx); }, 'text'); 
            else …
Run Code Online (Sandbox Code Playgroud)

javascript jquery closures jquery-callback

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

使用Angular的多个*Window*App

我们正在设计一个在多个浏览器窗口中运行的复杂Web应用程序.将使用AngularJS

(注意它必须看起来/感觉像一个应用程序 - 只是它分布在几个浏览器窗口)

只要父级保留对其他窗口的引用,Javascript就允许父窗口引用其他窗口上的对象.这些对象可以由本机访问器访问,也可以由jQuery访问.

是一个多窗口的应用程序之前已经使用Angular完成了吗?这样的应用程序如何构建为可扩展的?

(我已经看到了大型'angular-app'参考应用程序,它是大型应用程序的模板(如果我只能让它工作!)但是在使用多个浏览器窗口时没有找到任何东西......

angularjs

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

将 std::ostream 转换为 std::string

我维护的旧代码将文本收集到std::ostream. 我想将其转换为std::string.

我发现转换的例子std::sstringstreamstd::ostringstream等来std::string却没有明确std::ostreamstd::string

我怎样才能做到这一点?(仅限古代 C++ 98,请不要提升)

c++ std

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

FFMPEG 解码太慢 (avcodec_send_packet() / avcodec_receive_frame())

我正在使用 ffmpeg 库对 MPEG 传输流中的视频进行解码、缩放和重新编码。我刚刚从源代码重新编译到 v3.3.2,并从旧的 avcodec_decode_video2() API 更改为新的发送/接收 API。

旧的和新的 API 都非常缓慢地解码视频。

25 fps 视频 = 每 40 毫秒 1 帧。但是,我看到每帧要解码 70 到 120 毫秒。这是一个文件翻译器,因此需要它比实时运行得更快

代码大纲如下。有人对如何提高解码速度有任何想法吗?还有其他关于弃用avcodec_decode_video2()缓慢的帖子;这些都没有得到解决。新的 API 没有运行得更快...

gettimeofday(&tv1, NULL);
int rc = av_read_frame(pFormatContext, pESPacket);
gettimeofday(&tv2, NULL);

int ret = avcodec_send_packet(pDecoderContext, pESPacket);
if (ret < 0)
    continue;

ret = avcodec_receive_frame(pDecoderContext, pFrameDec);
if (ret != 0)
{
    printf("avcodec_receive_frame error: %d\n", ret);
    continue;
}
gettimeofday(&tv3, 0);

u_long twoMinusOne   = (tv2.tv_sec - tv1.tv_sec) * 1000000 + tv2.tv_usec - …
Run Code Online (Sandbox Code Playgroud)

ffmpeg libavcodec avcodec

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

Perl中的<*>是什么意思?

在下面的代码中,<*>命令到底是做什么的?

my @usbHddFileList = <*>;
foreach $usbHddFile (@usbHddFileList)
{
    system("rm -f $curMountDir/$usbHddFile < /dev/null > /dev/null 2>&1");
}
Run Code Online (Sandbox Code Playgroud)

perl

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

C++ 链接器抱怨 char* 的多个定义,但不抱怨 std::string

在一个大项目中,我有一个 .h 文件,它在命名空间中定义了很多常量。引入 const char* 常量会导致链接器错误,抱怨多个定义。

前h

#include <string>
namespace Dv
{
    const int MAX = 10;
    const std::string NAME = "bobo";

    const char* NAME2 = "fred";  // <-- ERROR: multiple definition of `Dv::NAME2'
}
Run Code Online (Sandbox Code Playgroud)

前A.cpp

#include "ex.h"
void aFunction() { printf("this is aFunction\n"); }
Run Code Online (Sandbox Code Playgroud)

前B.cpp

#include "ex.h"    
void aFunction(void);

int main(int argc, char **argv)
{
    aFunction();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译和链接

g++ -c exA.cpp
g++ -c exB.cpp
g++ exA.o exB.o -o ex
exB.o:(.data+0x0): multiple definition of `Dv::NAME2'
exA.o:(.data+0x0): first defined …
Run Code Online (Sandbox Code Playgroud)

c++ namespaces constants linker-errors linkage

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

API调用获取进程的当前堆大小?

我在大型C++应用程序中调试缓慢的内存泄漏,我想在程序的各个点打印出当前的堆大小.

除了打开和解析/proc/PID/statm是否有任何库API调用,我可以从中获取此信息?

sbrk()但是,有一篇帖子建议返回当前的堆指针 - 不是我想要的100%.(第二个问题:sbrk()值的变化是否与当前堆大小的变化相对应?)

我看了,但似乎很奇怪没有系统调用......

谢谢

更新我

我在调用sbrk()和阅读之间做了一些测试比较proc/.../statm.似乎sbrk() 不反映实际分配.相反,它似乎statm测量实际分配,同时sbrk()显示总堆大小.

这个总大小的增量大块(等于页面大小?).

下面的试验程序产生以下输出(堆大小如所报告sbrk()存储器使用所报告的/proc/.../statm,清楚地显示出的差:

0 ALLOC: HEAP SIZE: 0
MEMORY USAGE: 1308 201 174 2 0 566 0
1 ALLOC: HEAP SIZE: 135168
MEMORY USAGE: 1565 212 184 2 0 823 0
2 ALLOC: HEAP SIZE: 135168
MEMORY USAGE: 1822 216 187 2 0 1080 0
3 …
Run Code Online (Sandbox Code Playgroud)

c c++ linux heap-memory

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

检查std :: map的迭代器是否指向倒数第二个元素

我(向前)遍历std :: map,并希望查找迭代器是否指向倒数第二个元素。我似乎找不到任何地方的方法。

我有:

bool
isSecondLastFile(const TDateFileInfoMap::const_iterator &tsFile)
{
    TDateFileInfoMap::reverse_iterator secondLastIt = mFileInfoMap.rbegin()  + 1;
    return (tsFile == secondLastIt);
}
Run Code Online (Sandbox Code Playgroud)

TDateFileInfoMapstd :: map 在哪里

我越来越:

error: no match for ‘operator==’ in ‘tsFile == secondLastIt’
/usr/lib/gcc/i686-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_tree.h:287: note: candidates are: bool std::_Rb_tree_const_iterator<_Tp>::operator==(const std::_Rb_tree_const_iterator<_Tp>&) const [with _Tp = std::pair<const long int, TFileInfo>]
Run Code Online (Sandbox Code Playgroud)

这是否意味着我无法比较正向和反向迭代器?

我如何确定正向迭代器是否指向倒数第二个元素?

c++ dictionary iterator stdmap reverse-iterator

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

坚持使用D3.js - 使用多维数组填充选择下拉列表

D3.js非常棒,但我坚持应该非常简单.

我有两个组div(#RFL和#RFR),每个div包含两个div(分别是#RFLL,#RFLR,#RFR,#RFRR).我想在每个'sub-DIV'下面放一个选择下拉列表 - 所有这些都将由二维数组填充.

诀窍是,每个'组'div的下拉应该是相同的.

即在下面的代码中,

RFLL和RFLR应为1,2,3,RFRL和RFRR应为A,B,C

我已经习惯了很久了.除了我想要的那个之外,我得到了所有排列的组合...下面的版本给了我两个选择框,每个".RFSubPane" - 一个太多......我已经看到文档中的部分以及http:/ /christopheviau.com/d3_tutorial/

所有帮助/指针非常感谢!

<script>
var l1 = ["1", "2", "3"];
var l2 = ["A", "B", "C"];
var labels = [l1, l2];

function d3test()
{
    d3.selectAll(".RFSubPane")
        .selectAll(".RFPane")
        .data(labels)
       .enter()
        .append("select")
        .selectAll("option")
        .data(function (d) {return d;})
       .enter()
        .append("option")
        .text(String);
}
</script>

<div class="RFPane"  id="RFL" style="float: left; background: green;">
    RFL
    <div class="RFSubPane" id="RFLL" style="float: left; background: blue;"></div>
    <div class="RFSubPane" id="RFLR" style="float: right; background: gray;"></div>
</div>
<div class="RFPane"  id="RFR" style="float: right; background: red;">
    RFR …
Run Code Online (Sandbox Code Playgroud)

data-visualization multidimensional-array d3.js

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