0
我正嘗試在Salesforce中使用JavaScript遠程處理。我有一個輸入城市名稱的文本框。第一次點擊搜索按鈕我得到了正確的結果,但是當我再次點擊它時,我得到了許多重複的列。我不知道我出錯的地方。請幫幫我。這裏是我的代碼:詢問Salesforce中的Javascript遠程處理
控制器類:
global with sharing class AccountRemoter {
public static List<Account> account { get; set; }
public AccountRemoter() { }
@RemoteAction
global static List<Account> getAccount(String cityName) {
account = [SELECT Id, Name, City__c, RecordTypeId, RecordType.Name FROM Account WHERE City__c = :cityName];
return account;
}
}
視覺頁:
<apex:page controller="AccountRemoter">
<apex:includeScript value="{!$Resource.knockout}"/>
<apex:includeScript value="{!URLFOR($Resource.kendo, '/js/jquery.min.js')}"/>
<script type="text/javascript">
var VM = function() {
var self = this;
self.items = ko.observableArray();
self.columnNames = ko.computed(function() {
if (self.items().length === 0)
return [];
var props = [];
var obj = self.items()[0];
for (var name in obj)
props.push(name);
return props;
});
};
function getRemoteAccount() {
var cityName = document.getElementById('acctSearch').value;
Visualforce.remoting.Manager.invokeAction(
'{!$RemoteAction.AccountRemoter.getAccount}', cityName, function(result, event){
if (event.status) {
var vm = new VM();
ko.applyBindings(vm);
//vm.items.removeAll();
for (var i = 0; i < result.length; i++){
vm.items.push({
'Name': result[i].Name,
'City': result[i].City__c
});
}
} else if (event.type === 'exception') {
document.getElementById("responseErrors").innerHTML = event.message + "<br/>\n<pre>" + event.where + "</pre>";
} else {
document.getElementById("responseErrors").innerHTML = event.message;
}
},
{escape: true}
);
}
</script>
<input id="acctSearch" type="text"/>
<button onclick="getRemoteAccount()">Search</button>
<div id="responseErrors"></div>
<div id="dv">
<table style="float:left;" Id="mytable">
<thead >
<tr data-bind="foreach: columnNames" >
<th> <span data-bind="text: $data"></span>
</th>
</tr>
</thead>
<tbody data-bind="foreach: items">
<tr data-bind="foreach: $parent.columnNames">
<td data-bind="text: $parent[$data]"></td>
</tr>
</tbody>
</table>
</div>
</apex:page>
感謝您的回覆,我嘗試,但它確實不工作: var vm = new VM(); vm.items.removeAll(); ko.applyBindings(vm); – user3767018
每次單擊查找按鈕時,都必須清除VM對象。 – MrWaqasAhmed