1. 程式人生 > >品牌管理(修改品牌)

品牌管理(修改品牌)

1.1 實現思路

  1. 明確需求,點選列表的修改按鈕,彈出視窗,修改資料後點擊“儲存”執行儲存操作。
  2. 彈出視窗最關鍵的是這一行的資料怎麼獲取到?先為修改按鈕註冊點選事件,一點選獲取這一行的資料(因為這三列資料都有了,不需要再通過主鍵id去查詢,效能比較低)
  3. 為按鈕繫結點選事件 ng-click="show(entity)" ,一點選把這一行json資料獲取到了(entity)。
  4. 把entity放到scope裡面,在新增或修改品牌方法裡面做判斷,定義請求URL,開始定義的是新增的url,判斷scope的entity是否有這個id,有id則是做修改,把請求地址修改成update,然後在非同步請求處加上url,
  5. 此時還存在一點小問題:為修改按鈕繫結點選事件: $scope.show=function(entity){
            $scope.entity=entity;
    };
  6. 第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);
   }
}