2019年2月26日 星期二

javascript 日期相關函數應用

去掉時間
Date.prototype.date = function () {
   this.setHours(0, 0, 0, 0);
    return this;
}

月最後一天
Date.prototype.lastDay = function () {
    return new Date(this.getFullYear(), this.getMonth() + 1, 0);
}

月第一天
Date.prototype.firstDay = function () {
    return new Date(this.getFullYear(), this.getMonth(), 1);
}

增加月份
Date.prototype.addMonth = function (x) {
    this.setMonth(this.getMonth() + x);
    return this;
}

增加天數
Date.prototype.addDay = function (x) {
    this.setDate(this.getDate() + x);
    return this;
}

格式化為yyyymmdd
Date.prototype.yyyymmdd = function () {
    var mm = this.getMonth() + 1;
    var dd = this.getDate();
    return [this.getFullYear(),
    (mm > 9 ? '' : '0') + mm,
    (dd > 9 ? '' : '0') + dd
    ].join('');
};

2019年2月20日 星期三

uib-tabset 內使用 ng-model 方式

uib-tabset 使用自己的scope,若要用到原本的scope,必須綁定物件,不能綁定變數,也無法透過 $parent 綁定變數

$scope.store = { value: null };

<uib-tabset active="activeTab">
<uib-tab index="gridOptionsIn">
<select ng-model="store.value" ng-options="a.value as a.text for a in stores"></select>

ng-options 搭配 ng-model 注意

若 ng-model 綁定物件屬性,則選擇項目後會連動改到物件屬性 (但ng-model 還是會抓到正確的值),請不要再針對陣列尋找該屬性值對應物件,若要找出對應物件,則 ng-model 就綁定到物件,不要直接綁定物件屬性,或者增加一個屬性同樣對應到 ng-model 要綁定的屬性,以此屬性來查詢

例:
list=[{value:1,text:'a'},{value:2,text:'b'},{value:3,text:'c'},]
ng-options="a.value as a.text for a in list"
選擇第1個項目
ng-model=1
選擇第2個項目
ng-model=2
list=[{value:2,text:'a'},{value:2,text:'b'},{value:3,text:'c'},] (text:'a' 的 value 被改成 2)

增加另一個屬性對應 value
list=[{value:1,text:'a',id=1},{value:2,text:'b',id=2},{value:3,text:'c',id=3},]
以 id 來找物件

※不建議直接綁定物件屬性,曾經遇過該屬性會被莫名清空的問題,推測是因為 ng-options 的集合被清空造成連動,建議透過 ng-change 設定要綁定的物件屬性
ng-change="selectData['廠商編號']=selectData.vendor.value" ng-model="selectData.vendor" ng-options="a.text for a in selectData.vendors"

2019年2月15日 星期五

EF 匯入 view 注意 primary key 問題

自動變成PK : 使用 isnull 或 定義為 not null
不會變成PK : 使用 nullif

避免 view 的 not null 欄位且非PK 於EF 被誤判為PK
若不修正可能會造成儲存EF圖表時會刪除相關 .cs file

ex: select nullif(a.active,0) active,... from table1 a inner join table2 b on a.oid=b.id

Entity Framework 建立新物件並儲存後馬上取得關聯資料

使用 CreateProxy 建立物件,不要直接 new var newmodel = _contextXXX.CreateProxy<yyy>(); ... _contextXXX.yyy.Add(newmodel); await _contextXXX.SaveC...