【发布时间】:2016-02-13 04:59:33
【问题描述】:
我正在同时使用 AngularJS、ng-table 和 coffeescript,并想在 coffeescript 中创建一个多模板过滤器并将其传递到我的 angularjs 模板中。
我有一个姓名和姓氏组合列,我想要两个过滤器用于“姓名”和“姓氏”。
到目前为止,我的工作方式是这样的;
<td data-title="'Customer'" sortable="'fullname'"
filter="{'name_cont': 'text', 'surname_cont':'text'}" >
但我想像这样在我的 AngularJS 控制器中定义这个过滤器
$scope.nameFilterDef = {
name: {
id: "text",
placeholder: "Name"
},
surname: {
id: "text",
placeholder: "Surname"
}
}
并像这样使用该过滤器清理我的模板;
<td data-title="'Customer'" sortable="'fullname'"
filter="nameFilterDef" >
当我这样调用过滤器时,虽然没有出现过滤器框。
更新
如果我将 {{nameFilterDef}} 放在页面上,我可以看到我的过滤器哈希被传入。
【问题讨论】:
-
乍一看,filter 属性似乎没有被解析为角度表达式。你试过
filter="{{nameFilterDef}}"吗? -
是的,我确实尝试过,但我得到了错误;错误:[$parse:syntax] 语法错误:令牌“nameFilterDef”是意外的,在表达式 [{{nameFilterDef}}] 的第 3 列应为 [:],从 [nameFilterDef}}] 开始。
-
您可以在模板中通过 ng-repeating
nameFilterDef来测试您的代码。如果它显示为空,则意味着模板$scope与您预期的不同。你能创建一个 plunker 或 jsFiddle 吗? -
如果我在 ng-repeat 中使用 nameFilterDef,我的过滤器会打印在屏幕上。
标签: javascript angularjs coffeescript ngtable