品牌管理(修改品牌)
1.1 實現思路
- 明確需求,點選列表的修改按鈕,彈出視窗,修改資料後點擊“儲存”執行儲存操作。
- 彈出視窗最關鍵的是這一行的資料怎麼獲取到?先為修改按鈕註冊點選事件,一點選獲取這一行的資料(因為這三列資料都有了,不需要再通過主鍵id去查詢,效能比較低)
- 為按鈕繫結點選事件 ng-click="show(entity)" ,一點選把這一行json資料獲取到了(entity)。
- 把entity放到scope裡面,在新增或修改品牌方法裡面做判斷,定義請求URL,開始定義的是新增的url,判斷scope的entity是否有這個id,有id則是做修改,把請求地址修改成update,然後在非同步請求處加上url,
- 此時還存在一點小問題:為修改按鈕繫結點選事件: $scope.show=function(entity){
$scope.entity=entity;
};- 第5點解決方案:$scope.entity與等號右邊的entity是同一個json物件,這時候需要把右邊的entity轉換成新的json字串
把json字串轉換成新的json物件
1.2 需求分析
點選列表的修改按鈕,彈出視窗,修改資料後點“儲存”執行儲存操作
1.3 前端程式碼實現
1.3.1 實現資料繫結
在sunny-manager-web/src/main/webapp/admin/brand.html頁面中,增加JS程式碼顯示修改視窗:
// 為修改按鈕繫結點選事件 $scope.show = function (entity) { // 把entity轉化成json字串 var jsonStr = JSON.stringify(entity); // 把json字串轉化成新的json物件 $scope.entity = JSON.parse(jsonStr);};
修改列表中的“修改”按鈕,呼叫此方法執行表單資料繫結:
<button type="button" class="btn bg-olive btn-xs"
data-toggle="modal"
data-target="#editModal"
ng-click="show(entity);">修改</button>
1.3.2 儲存資料
修改JS的$scope.saveOrUpdate方法:
/** 新增或修改 */
$scope.saveOrUpdate = function(){
/** 定義請求URL */
var url = "save"; // 新增品牌
if ($scope.entity.id){
url = "update"; // 修改品牌
}
/** 傳送post請求 */
$http.post("/brand/" + url, $scope.entity)
.then(function(response){
if (response.data){
/** 重新載入品牌資料 */
$scope.findAll();
}else{
alert("操作失敗!");
}
});
};
1.4 後端程式碼實現
1.4.1 控制器層
sunny-manager-web/src/main/java/com.sunny.manager.controller的BrandController.java新增方法:
/**修改品牌*/ @PostMapping("/update") public boolean update(@RequestBody Brand brand){ try { brandService.update(brand); return true; } catch (Exception e) { e.printStackTrace(); } return false; }
1.4.2 服務實現層
sunny-sellergoods-service/src/main/java/com.sunny.sellergoods.service.impl的BrandServiceImpl.java實現方法:
/** 修改品牌 */ @Override public void update(Brand brand){ try { // 選擇性修改(它會判斷Brand實體中的屬性是否有值,有值就生成到update語句中) brandMapper.updateByPrimaryKeySelective(brand); }catch (Exception ex){ throw new RuntimeException(ex); } }