elasticsearch,Javascript,Angularjs,elasticsearch" /> elasticsearch,Javascript,Angularjs,elasticsearch" />

Javascript ElasticUI-使用ng单击触发搜索/排序

Javascript ElasticUI-使用ng单击触发搜索/排序,javascript,angularjs,elasticsearch,Javascript,Angularjs,elasticsearch,这是我和作者之间的一封电子邮件。我已经把它从电子邮件改为SO,希望它能对其他人有益。可以找到ElasticUI 我的原始问题 我看到搜索是通过querystring.length启用的eui。我们希望搜索和排序由按钮触发,而不是 观看功能 当搜索没有返回结果时,会有点混乱。它只返回deafualt(全部),而不是no results found消息 结果。是否可以在默认情况下使结果为空 而不是全部归还 作者的答案 1+2-这两者都是可能的。在AngularJS中,记住什么是“模型” 您使用并连接

这是我和作者之间的一封电子邮件。我已经把它从电子邮件改为SO,希望它能对其他人有益。可以找到ElasticUI

我的原始问题

  • 我看到搜索是通过
    querystring.length
    启用的
    eui
    。我们希望搜索和排序由按钮触发,而不是 观看功能
  • 当搜索没有返回结果时,会有点混乱。它只返回deafualt(全部),而不是
    no results found
    消息 结果。是否可以在默认情况下使结果为空 而不是全部归还
  • 作者的答案

    1+2-这两者都是可能的。在AngularJS中,记住什么是“模型” 您使用并连接到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
    条件不起作用(“未指定查询”始终保持不变),提交搜索后,结果为空,即使是查询,我确信应该返回结果

    作为一个新手,我可能会犯一个明显的错误。有什么明显的遗漏吗

    编辑
    发现问题:忘记填写要对其运行查询的字段:
    eui query=“ejs.MatchQuery('post_title',querystring)”
    ('post_title'是ES字段)

    尽管您似乎已经找到了答案,但我认为您上面发布的“author-answer”(我)中仍然存在缺陷。好像我爱上了那个女孩。这应该更好地发挥作用:

    <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_模型| json}
    搜寻
    没有指定查询
    
    在控制器中定义qs_模型比我前面演示的ng init更简洁


    还要注意的是,即使禁用eui查询(未指定查询字符串),ElasticUI此时仍会在后台执行MatchAll查询(您可以选择使用ng if隐藏结果)。

    尽管看起来您可能已经找到了答案,但我认为您上面发布的“作者答案”(me)中仍然存在错误。好像我爱上了那个女孩。这应该更好地发挥作用:

    <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_模型| json}
    搜寻
    没有指定查询
    
    在控制器中定义qs_模型比我前面演示的ng init更简洁


    还要注意的是,即使禁用eui查询(未指定查询字符串),ElasticUI此时仍会在后台执行MatchAll查询(您可以选择使用ng if隐藏结果)。

    尽管看起来您可能已经找到了答案,但我认为您上面发布的“作者答案”(me)中仍然存在错误。好像我爱上了那个女孩。这应该更好地发挥作用:

    <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_模型| json}
    搜寻
    没有指定查询
    
    在控制器中定义qs_模型比我前面演示的ng init更简洁


    还要注意的是,即使禁用eui查询(未指定查询字符串),ElasticUI此时仍会在后台执行MatchAll查询(您可以选择使用ng if隐藏结果)。

    尽管看起来您可能已经找到了答案,但我认为您上面发布的“作者答案”(me)中仍然存在错误。好像我爱上了那个女孩。这应该更好地发挥作用:

    <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_模型| json}
    搜寻
    没有指定查询
    
    在控制器中定义qs_模型比我前面演示的ng init更简洁


    还要注意的是,即使禁用eui查询(未指定查询字符串),ElasticUI此时仍会在后台执行匹配所有查询(您可以选择使用ng if隐藏结果)。

    Yousef,我对此进行了尝试,发现当它返回结果时,结果非常不准确。当我从a)ejs.MatchQuery中的第二个变量和b)启用了
    eui
    指令中删除
    .length
    时,结果再次准确。删除
    no-specified
    的操作达到了预期效果。Yousef,我尝试了一下,发现当它返回结果时,结果非常不准确。当我从a)ejs.MatchQuery中的第二个变量和b)启用了
    eui
    指令中删除
    .length
    时,结果再次准确。删除
    no-specified
    的操作达到了预期效果。Yousef,我尝试了一下,发现当它返回结果时,结果非常不准确。当我从a)ejs.MatchQuery中的第二个变量和b)启用了
    eui
    指令中删除
    .length
    时,结果再次准确。删除
    no-specified
    的操作达到了预期效果。Yousef,我尝试了一下,发现当它返回结果时,结果非常不准确。当我从a)ejs.MatchQuery中的第二个变量和b)启用了
    eui
    指令中删除
    .length
    时,结果再次准确。删除
    未指定任何查询
    的操作按预期进行。