Hỏi về directive trong angularjs
-
Nhu cầu của mình là chuyển từ timestamp (milisecond Unix) sang chuỗi datetime, mình có thử tạo directive (để view có thể sử dụng nhiều nơi), cụ thể:
Code html của mình như thế này:
<input type="text" ng-model="text" /> <span show-date="{{text}}"></span>
Directive showDate của mình như thế này:
angular.module('app').directive('showDate', function(){ return { link: function(scope, element, attrs){ var timestamp = (attrs.showDate); var d = new Date(+timestamp); element.html(d.getFullYear() + '/' + (d.getMonth()+1) + '/' + d.getDate() + ' ' + d.getHours() + ':' + d.getMinutes()); } } });
Vấn đề là cái html Inner của span chỉ show kết quả ban đầu (1970/1/1 xx:yy), khi nhập giá trị mới cho {{text}} thì span vẫn giữ nguyên, không thay đổi gì cả (?!!)
Vậy mình hiểu sai hay thiếu cái gì trong directive showDate của mình? -
@phatht bạn có thể dùng filter.
https://docs.angularjs.org/api/ng/filter/date -
@phatht Hàm
link
bạn đang sử dụng chỉ chạy 1 lần sau khi DOM được sinh ra. Bạn cần phải theo dõi attributeshowDate
bằng hàm$watch
, sau đó, cập nhật lại view.Bạn tham khảo thêm ví dụ mẫu trên trang chủ của nó ở mục
Creating a Directive that Manipulates the DOM
-
Thank all