1、檢視代碼邏輯
controller的請求代碼:
//跳轉vidyoname初始化table
var name = $routeParams.name; //路由中擷取到傳入的name值
if(name) { //如果name變量有值
console.log("name:"+name); //列印name變量
$scope.flag = false;
$scope.vidyocallflow.vidyoname = name; //動态綁定将name變量的值賦給作用域集合中vidyoname元素
console.log("vidyocallflow.vidyoname="+$scope.vidyocallflow.vidyoname); //列印作用域集合中vidyoname元素
console.log($scope.vidyocallflow); //列印作用域集合
console.log($('#vidyoCallFlowForm')); //列印表單
btTable.searchDate('vidyoCallFlowForm','/ccao/media/vidyocallflow/query.do'); //通過bootstrap自帶的請求searchDate方法将url和表單作為參數,請求到背景。
}
btTable.searchDate方法:
//formId 搜尋資料的表單;為空時,傳NULL
bootObject.searchDate = function(formId,url) {
console.info('url:'+url);
var searchData;
if(formId==null){
searchData=null;
}else{
searchData = $('#' + formId + '').serialize(); //通過上傳的表單id擷取表單中的所有值
}
var tmp = '?';
/*if(url.contain('?')|| url.contain("&")){
tmp = '';
}*/
$('#' + tableId + '').bootstrapTable('refresh', {
url : '' + url + tmp + searchData,
}) //bootstrap表格自帶請求并填充表格的方法
};
2、通過日志列印,發現綁定的作用域集合vidyoname有值,且作用域集合和表單列印出來,其中的vidyoname都有值,在彈出的VidyoCallFlow頁面的name的input框中也有資料填充,說明雙向綁定指派是成功的,但是在使用 btTable.searchDate方法,傳入表單名和url時,查詢不到結果,且發現請求到背景的url為:"url:/ccao/media/vidyocallflow/query.do?vidyoname=",參數vidyoname沒有值帶入,通過背景日志發現确實該請求沒有參數傳到背景,也說明了在使用bootstrap自帶請求方法時,沒有從表單中擷取到vidyoname的值,是以請求沒有攜帶該參數的值。
3、但是再次通過點選VidyoCallFlow頁面的搜尋按鈕時,觸發頁面的點選事件,該事件執行的請求方法與跳轉請求的方法相同,同為bootstrap自帶的請求方法,但是傳入背景參數有值,且查詢有結果。
4、原因:在路由跳轉雙向綁定資料時,存在通過jquery擷取不到表單中元素的值的問題,後采用jquery指派的方法替代将雙向綁定的方法:
//跳轉vidyoname初始化table
var name = $routeParams.name;
if(name) {
console.log("name:"+name);
$scope.flag = false;
$('#vidyoname').val(name); //jquery指派
btTable.searchDate('vidyoCallFlowForm','/ccao/media/vidyocallflow/query.do');
}
5、查詢成功,跳轉擷取到頁面查詢結果。