这是从我和作者之间的电子邮件线程中获取的。我已将其从电子邮件转移到SO,希望它可能使其他人受益。可以找到ElasticUI here
我的原始问题
- 我看到
eui-enabled
的搜索结果为querystring.length
。我们希望按钮触发搜索和排序,而不是 观看功能。- 当搜索没有返回结果时,它有点混乱。它只是返回deafualt(全部)而不是
醇>no results found
消息 结果。是否可以将结果默认为空 还是全部退货?
作者的回答
1 + 2 - 这都是可能的。在AngularJS中,请记住" model" 您使用的变量并连接到您的UI /指令 以下几行是有意义的
<div eui-query="ejs.MatchQuery('textField', querystring)" eui-enabled="querystring.length"> <input type="text" ng-model="querystring_live" /> <input type="button" ng-click="querystring=querystring_live" /> </div> <div ng-if="!querystring.length"> No query specified </div>
请注意点击后会发生什么。您还可以包装ng-if子句 你周围的结果是只在查询时显示结果 指定。
当我添加此代码段时,ng-if
条件无法执行(&#34;未指定查询&#34;始终停留),并且在提交搜索后,结果为空,甚至如果它的查询我确定应该返回结果。
对角度有所了解,一个明显的错误可能会超过我的头脑。是否有任何明显缺失的东西?
修改
发现问题:忘记填写用于运行查询的字段:eui-query="ejs.MatchQuery('post_title', querystring)"
(&#39; post_title&#39;是ES字段)
答案 0 :(得分:3)
虽然看起来你可能已经找到了答案,但我认为这仍然是作者答案中的一个错误&#34; (我)你发布在上面。好像我为dot-problem in Angular而堕落。这应该更好:
<div ng-init="qs_model={live:'', after_click:''}">
Debug: {{qs_model | json}}
<h3>Search</h3>
<div eui-query="ejs.MatchQuery('tweet.text', qs_model.after_click)" eui-enabled="qs_model.after_click.length">
<input type="text" ng-model="qs_model.live" />
<input type="button" ng-click="qs_model.after_click=qs_model.live" />
</div>
<div ng-if="!qs_model.after_click.length">No query specified </div>
</div>
在控制器中定义qs_model更加清晰,而不是上面演示的ng-init。
另请注意,即使禁用了eui-query(未指定查询字符串),ElasticUI此时仍将在后台执行MatchAll查询(您可以选择使用ng-if隐藏结果)。