尝试过滤数组时Angular表达式解析错误

时间:2015-08-23 09:21:34

标签: javascript arrays angularjs filter

说,我有一个数组 protected void Page_Load(object sender, EventArgs e) { SqlConnection conn; SqlCommand cmd; using (conn) { //open the connection conn.Open(); //send the query and store the results in a sqldatareader SqlDataReader rdr = cmd.ExecuteReader(); if (rdr.Read()) { //set the text of our label to the current # of hits lblHits.Text = "Default Page Hits - " + rdr["Hits"].ToString(); } Session["field1"] = rdr["Hits"].ToString(); } } ,我想过滤它以删除空值并加入一个字符串,如下所示:

[null, 'foo', 'bar']

如果我在控制器和[null, 'foo', 'bar'].filter(function(el) { return el !== null; }).join(', ')中编写这段代码,一切正常,没有错误。但是如果我在我的视图中用花括号写出一个角度表达式,如:

console.log();

angular吐出一个解析错误:

<p>{{ [null, 'foo', 'bar'].filter(function(el) { return el !== null; }).join(', ') }}</p>

在我的项目中,这个控制器有许多影响这个最终字符串的变量,它们在许多函数中都有变化。当然,我可以编写一个函数将最终字符串写入控制器变量,比如Syntax Error: Token '{' is unexpected, expecting [)] at column 42 of the expression [[null, 'foo', 'bar'].filter(function(el) { return el !== null; }).join(', ')] starting at [{ return el !== null; }).join(', ')]. ,如下所示:

vm.finalString

并将此函数注入每个更改后更改这些变量的函数,并在我的视图中回显花括号中的vm.updateFinalString = function() { vm.finalString = [vm.var1, vm.var2, ...].filter(function(el) { return el !== null; }).join(', '); } ,但似乎有很多代码重复。它是一个&#34;功能&#34;棱角分明还是我错过了什么?感谢。

1 个答案:

答案 0 :(得分:0)

您必须编写自己的自定义过滤器,以及documentation如何执行此操作。