gpt4 book ai didi

javascript - polymer 如何将纸张输入值绑定(bind)到 iron-ajax

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:23:15 24 4
gpt4 key购买 nike

以下是我的页面代码

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>GP and Practice search</title> <!-- Scripts -->
<script src="bower_components/webcomponentsjs/webcomponents-lite.js"></script>
<link rel="import" href="elements/elements.html" />
<link rel="stylesheet" type="text/css" href="Styles/styles.css" />
<link rel="stylesheet" type="text/css" href="Styles/home.css"/>
<!-- google fonts definitions -->
<link href='http://fonts.googleapis.com/css?family=Roboto:400,700' rel='stylesheet' type='text/css'>

</head>

<body unresolved class="fullbleed layout vertical">
<dom-module id="page-scafolding">
<template>
<paper-drawer-panel elevation="1">
<paper-header-panel main mode="waterfall-tall">
<paper-toolbar id="mainToolbar">
<paper-icon-button id="paperToggle" icon="menu" paper-drawer-toggle></paper-icon-button>
<span class="flex"></span>
<paper-icon-button icon="search" on-tap="srchandler" id="srchandler"></paper-icon-button>
<input type="text" id="searchText" hidden$="{{hideSearch}}" onkeypress="handleKeyPress(event);" />
<div class="middle paper-font-display2 app-name ident">Search</div>
</paper-toolbar>
<paper-material elevation="1" class="contentContainer" >
<div id="Content" >
<span>
<paper-input id="searchCriteria"
class="searchBox"
label="Code or name of the GP or Practice you are looking for?" />
</span>
<div style="text-align:center; padding:10px;">
<paper-button tabindex="0" raised="true" class="colorful" on-click="searchPractice">Search for Practice</paper-button>
<paper-button tabindex="0" raised="true" class="colorful" on-click="searchPractice">Search for GP</paper-button>
</div>
<div id="SearchResult">
<template is="dom-repeat" items="{{data}}">
<p><span>{{item.Name}}</span> (<span>{{item.PracticeCode}}</span>)</p>
</template>
</div>
</div>
</paper-material>
<iron-ajax id="GPSearch"
url="/GPPractices.ashx"
handle-as="json"
last-response="{{data}}"
params='{{ajaxParams}}'
handleerror="handleError">

</iron-ajax>
</paper-header-panel>
</paper-drawer-panel>
</template>
<script>
Polymer({
is: "page-scafolding",
ready: function () {
this.hideSearch = true;
this.$.searchText.keyup(function (e) {
alert('off to search for something!');
});
},
ajaxParams: {
type: String,
computed: 'buildSearchRequest();'
},
buildSearchRequest: function () {
return {
Command: 'Search',
Criteria: this.$.searchCriteria
}
},
srchandler: function () {
// search for contents of search box is showing, otherwise show it.
if (!this.hideSearch)
{
alert('off to search for something!');
}
else {
this.hideSearch = !this.hideSearch;
if (!this.hideSearch) {
this.$.searchText.focus();
}
}
},
searchPractice: function () {
try {
this.$.GPSearch.generateRequest();
}
catch (e) {
alert("Whoops! " + e.message);
}

},
handleError: function (request, error) {
alert('Whoops! ' + error);
}
});
</script>
</dom-module>

<page-scafolding />
</body>
</html>

我收到了 ajax 调用,并且正在调用 GPPractices.ashx。我要做的是将两个参数传递给此页面。一个是 Command,值为“search”,另一个参数是输入到名为 searchCriteria 的 paperInput 中的任何内容。

问题在于没有得到两个参数 Command 和 Criteria。我得到一个空的 QueryString,它看起来不像是曾经调用过 buildSearchRequest。

那么我怎样才能得到它,如果我在纸输入中输入“abba”,查询字符串应该是

Command=search&criteria=abba

最佳答案

我在下面放置了您代码的简化工作版本。以下是一些注意事项:

  1. 这个声明

    ajaxParams: {
    type: String,
    computed: 'buildSearchRequest();'
    },

    是一个属性定义,必须放在 properties 里面对象。

  2. 回调值如

    computed: 'buildSearchRequest();'

    看起来像函数 但它们不是实际代码,不需要尾随 ;

  3. 您的已计算 函数需要有一个参数来告诉它何时重新计算。我将其修改为如下所示:

    computed: 'buildSearchRequest(searchCriteria)'

    我绑定(bind)了searchCriteria输入 value .

  4. Polymer 代码中的事件处理程序使用 on-符号,所以

    onkeypress="handleKeyPress(event);"

    应该是

    on-keypress="handleKeyPress"
  5. iron-ajax 错误通知是通过名为 error 的事件发出的, 所以

    handleerror="handleError"

    应该是

    on-error="handleError"
  6. 我添加了 stringify位和参数的输出只是为了让您可以看到它在您键入时进行计算,这对于您的用例来说不是必需的。

  7. 在 HTML 中只有极少数元素是 void(不需要结束标记)。你应该避免做 <tag-name/>因为它最终会引起麻烦。

直播:http://jsbin.com/sorowi/edit?html,output

    <dom-module id="page-scafolding">
<template>

<paper-input
label="Code or name of the GP or Practice you are looking for?"
value="{{searchCriteria}}">
</paper-input>

<br>

<div style="text-align:center; padding:10px;">
<paper-button tabindex="0" raised="true" style="background-color: lightblue;" on-click="searchPractice">Search for Practice</paper-button>
</div>

<iron-ajax id="GPSearch"
url="/GPPractices.ashx"
handle-as="json"
last-response="{{data}}"
params="{{ajaxParams}}"
on-error="handleError">
</iron-ajax>

<br><br>
ajaxParams: <span>{{stringify(ajaxParams)}}</span>

<div id="SearchResult">
<template is="dom-repeat" items="{{data}}">
<p><span>{{item.Name}}</span> (<span>{{item.PracticeCode}}</span>)</p>
</template>
</div>

</template>
<script>
Polymer({

is: "page-scafolding",

properties: {
ajaxParams: {
type: String,
computed: 'buildSearchRequest(searchCriteria)'
}
},

stringify: JSON.stringify,

buildSearchRequest: function (criteria) {
return {
Command: 'Search',
Criteria: criteria
};
},

searchPractice: function () {
this.$.GPSearch.generateRequest();
},

handleError: function(e) {
alert('Whoops! ' + e.detail);
}

});
</script>
</dom-module>

HTH

关于javascript - polymer 如何将纸张输入值绑定(bind)到 iron-ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31059600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com