'사용자 정의'에 해당되는 글 4건

  1. 2014.09.17 Angular 사용자 정의 속성 1
  2. 2014.09.15 Angular 바인딩/ 팩토리
  3. 2014.07.15 jQuery 사용자 정의 함수 만들기
  4. 2014.07.15 jQuery 확장

Angular 사용자 정의 속성

Posted by 단순대왕 Angular.js : 2014. 9. 17. 15:37

Angular.js 라이브러리는 문자열 "ng"로 시작하는 속성으로 태그에 기능을 부여합니다.

일반 개발자도 특별한 속성을 만들어 태그에 기능을 부여할 수 있습니다.


var app = angular.module('custom', []);

// 사용자 정의 속성은 directive() 메서드로 만듭니다.

// 첫 번째 매개변수는 사용자 정의 속성 이름을 입력하고

// 두 번째 매개변수는 함수를 리턴하는 함수를 입력합니다.

app.directive('customTimer', function($http){

return function(scope, element, attrs){

}

});

<h1 custom-timer="model"></h1>

scope - 태그가 속한 컨트롤러의 $scope 속성을 의미

scope 속성을 알아보려면 컨트롤러를 만들어야 합니다.

예)

var app = angular.module('custom', []);

app.directive('customTimer', function($http){

return function(scope, element, attrs){

alert(JSON.stringify({

date: scope.date,

other.scope.other

}, null, 2));

};

});

function basicController($scope){

$scope.date = new Date().toString();

$scope.other = 'OtherData';

}

<body ng-controller="basicController">

<h1 custom-timer="model" custom-data="CustomData" data-other="OtherData"></h1>

</body>


$destroy() - 태그가 삭제될 때 발생하는 이벤트
예)
element.bind('$destroy', function(){
clearInterval(timerId);
});

$watch() - 변수를 감시할 때 사용합니다.
첫 번째 매개변수에 변수 이름을 넣고
두 번째 매개변수에 변경될 때 실행할 함수를 입력합니다.
예)
app.directive('cutomTimer', function($http){
return function(scope, element, attrs){
scope.$watch('other', function(newValue, oldValue){
element.html(newValue);
});
};
});

element - 태그 자체를 의미

element는 사용자 정의 속성을 지정한 태그를 나타냅니다.

자바스크립트에서 기본적으로 제공하는 문서 객체가 아닙니다.

element 메서드()

addClass(), after(), append(), attr(), bind(), children(), clone(), contents(), css(), data(), 

eq(), find(), hasClass(), html(), next(), parent(), prepend(), prop(), 

ready() - 문서 객체에 ready 이벤트를 연결합니다.

remove(), removeAttr(), removeClass(), removeData(), replaceWith(), text(), toggleClass(),

triggerHandler() - 문서 객체에 특정한 이벤트를 강제로 발생시킵니다.

unbind(), val(), 

wrap() - 문서 객체를 감싸는 문서 객체를 생성합니다.

예)

app.directive('customTimer, function($http){

return function(scope, element, attrs){

element.html(new Data().toString());

element.bind('click', function(){

element.html(new Data().toString());

});

};

});

function basicController($scope, $timout){

// $timeout(fn, [delay], [invokeApply]);

$scope.date = new Date().toString();

$scope.other = 'OtherData';

$timeout(call = function(){

$timeout(call , 1000);

}, 1000);

}


attrs - 태그의 속성을 의미

attrs 객체는 현재 태그의 속성을 담은 객체입니다.
예)
<h1 custom-timer="model" custom-data="CustomData" data-other="OtherData"></h1>
return function(scope, element, attrs){
alert(attrs.customTimer);    // model
alert(attr.customData);      // CustomData
alert(attr.other);                // OtherData
}


'Angular.js' 카테고리의 다른 글

Angular 바인딩/ 팩토리  (0) 2014.09.15
angular example  (0) 2014.09.15
Angular 서비스  (0) 2014.09.15
Angular 페이지 라우트  (0) 2014.09.15
Angular ng 속성  (0) 2014.09.12
  

Angular 바인딩/ 팩토리

Posted by 단순대왕 Angular.js : 2014. 9. 15. 18:00

Angular.js 라이브러리는 특별한 일이 있을 때만 데이터와 뷰를 바인딩합니다.

예를 들어 속성으로 연결한 이벤트를 실행하거나 $http 서비스를 만드는데 데이터와 뷰를 바인딩합니다.


강제로 바인딩하고 싶다면 $scope 객체의 $apply() 메서드를 사용합니다.

예)

setInterval(function(){ 

$scope.title += "+";

$scope.$apply();

}, 1000);


팩토리

Angular.js 라이브러리는 팩토리 기능을 사용해 개발자가 직접 서비스를 만들 수 있습니다.

서비스를 만들어 사용하면 코드를 모듈로 분리해서 사용하므로 재사용성이 좋아지고 본문 코드가 

간단해집니다.

<html ng-app="basic">

<script>

// 모듈을 생성합니다.

var basic_module = angular.module('basic', []);

// 서비스를 생성합니다.

/*

basic 모듈을 여기서 생성한다. 

-> 컨트롤러는 모듈에 포함된다. 

-> 컨트롤러에서는 생성된 서비스를 사용한다.

*/

basic_module.factory('$custom', function ($rootScope) {

// 클로저로 은닉 변수를 만듭니다.

var timerId = null;

// 리턴합니다.

return {

startTimer: function (callback, interval) {

timerId = setInterval(function () {

callback();

$rootScope.$apply();

}, interval);

},

stopTimer: function () {

clearInterval(timerId);

timerId = null;

}

};

});

</script>

<script>

basic_module= angule.module(); -> 모듈을 여기서 생성하면 서비스(Factory)를 생성하지 못한다.

// 컨트롤러를 생성합니다.

basic_module.controller('basicController', function ($scope, $custom) {

// 변수를 입력합니다.   

$scope.title = 'Factory';

// 타이머를 연결합니다.

$custom.startTimer(function () {

$scope.title += '+';

}, 1000);

});

</script>

<div ng-controller="basicController">

<h1>{{ title }}</h1>

</div>

'Angular.js' 카테고리의 다른 글

Angular 사용자 정의 속성  (1) 2014.09.17
angular example  (0) 2014.09.15
Angular 서비스  (0) 2014.09.15
Angular 페이지 라우트  (0) 2014.09.15
Angular ng 속성  (0) 2014.09.12
  

jQuery 사용자 정의 함수 만들기

Posted by 단순대왕 jQuery : 2014. 7. 15. 14:47

$의 jQuery 참조 보장

(function($){

$.say = function(what){ alert('I say ' + what); }

})(jQuery)


데이터를 처리하는 유틸리티 함수

$.toFixedWidth(value, length, fill) 

jquery.data-1.0.js


- 전달된 값(value)을 지정한 길이(length)의 고정폭 필드 형식으로 변경

- 선택값으로 채움 문자 지정

(function($){

$.toFixedWidth = function(value, length, fill){

var result = (value || '').toString();

fill = fill || '0';

var padding = length - result.length;

if(padding < 0){

result = result.substr(- padding);

}

else{

for(var n=0; n<padding; n++){

result = fill + result;

}

}

return result;

};

})(jQuery)


날짜 형식기 만들기

$.formatDate(date, pattern)

jquery.date-1.0.js


- 전달된 날짜를 제공된 패턴에 맞추어 형식화한다.

(function($){

$.formatDate = function(date, pattern){

var result = [];

while(pattern.length > 0){

$.formatDate.patternParts.lastIndex = 0;

var matched = $.formatDate.patternParts.exec(pattern);

if(matched){

result.push($.formatDate.patternValue[matched[0]].call(this, date));

pattern = pattern.slice(matched[0].length);

}

else{

result.push(pattern.charAt(0));

pattern = pattern.slice(1);

}

}

return result.join('');

}


$.formatDate.patternParts = /^(yy(yy)?|M(M(M(M)?)?)?|d(d)?|EEE(E)?|a|H(H)?|h(h)?|m(m)?|s(s)?|S)/;


$.formatDate.monthNames = [

'January','February','March','April','May','June',

'July','August','September','October','November','December'

];

$.formatDate.dayNames = [

'Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'

];


$.formatDate.patternValue = {

yy: function(date){

return $.toFixedWidth(date.getFullYear(), 2);

},

yyyy: function(date){

return date.getFullYear().toString();

},

MMMM: function(date){

return $.formatDate.monthNames[date.getMonth()];

},

MMM: function(date){

return $.formatDate.monthNames[date.getMonth()].substr(0,3);

},

MM: function(date){

return $.toFixedWidth(date.getMonth()+1, 2);

},

M: function(date){

return date.getMonth()+1;

},

dd: function(date){

return $.toFixedWidth(date.getDate(), 2);

},

d: function(date){

return date.getDate();

},

EEEE: function(date){

return $.formatDate.dayNames[date.getDay()];

},

EEE: function(date){

return $.formatDate.dayNames[date.getDay()].substr(0, 3);

},

HH: function(date){

return $.toFixedWidth(date.getHours(), 2);

},

H: function(date){

return date.getHours();

},

hh: function(date){

var hours = date.getHours();

return $.toFixedWidth(hours > 12 ? hours - 12 : hours, 2);

},

h:function(date){

return date.getHours() % 12;

},

mm: function(date){

return $.toFixedWidth(date.getMinutes(), 2);

},

m: function(date){

date.getMinutes();

},

ss: function(date){

return $.toFixedWidth(date.getSeconds(), 2);

},

s: function(date){

return date.getSeconds();

},

S: function(date){

return $.toFixedWidth(date.getMilliseconds(), 3);

},

a: function(date){

return date.getHours < 12 ? 'AM' : 'PM';

}

}

})(jQuery)


'jQuery' 카테고리의 다른 글

jQuery 확장 메소드 만들기  (0) 2014.07.16
jQuery Deprecated API  (0) 2014.07.15
jQuery 확장  (0) 2014.07.15
jQuery Utility API  (0) 2014.07.15
jQuery 새로운 기술이 아니라 새로운 생각  (0) 2014.07.14
  

jQuery 확장

Posted by 단순대왕 jQuery : 2014. 7. 15. 14:24

jQuery 확장을 사용하는 이유

- 사이트 전체에 일관된 코드 스트일을 유지하는데 도움이 된다.

- jQuery가 재사용 가능한 도구들과  API를 제공한다.

- jQuery가 제공하는 기반 코드를 활용할 수 있다.

파일과 함수 이름 짓기

- 접두어로 jquery.를 사용한다.

- 이어서 플러그인 이름을 적는다.

- 선택적으로 플러그인의 메지어와 마이너 버전 값을 적는다.

- .js 로 파일 이름을 끝맺는다.

$를 경계하라

(function($){

    // 플러그인 정의

})(jQuery);

복잡한 매개변수 목록을 단숙하게 만들기

- 선택사항 해시(options hash)를 사용한다. 선택사항 해시를 사용하면 선택적인 매개변수는 매개변수

  정보를 이름/값 쌍 형식의 프로퍼티로 가지는 자바스크립트의 Object 인스턴스로 전달

- complea(valueA, {p7:valueB});

- complae(valueA, {p3: valuceC, p4:valueD, p5:valueB});

- complex(p1, options)

  function complex(p1, options){

      var settings = $.extend({

        option1: defaultVaule1,

        option2: defaultValue2,

        option3: defaultValue3

    }, options||{});

    // 함수 나머지 부분

  }

- ||{}를 사용하여  options 객체가 null이거나 undefined인지 확인한다. 만약 options 변수가 false라면

  (null과 undefined는 조건식에서 false이다) 빈 객체가 사용된다. 


'jQuery' 카테고리의 다른 글

jQuery 확장 메소드 만들기  (0) 2014.07.16
jQuery Deprecated API  (0) 2014.07.15
jQuery 사용자 정의 함수 만들기  (0) 2014.07.15
jQuery Utility API  (0) 2014.07.15
jQuery 새로운 기술이 아니라 새로운 생각  (0) 2014.07.14
  
 «이전 1  다음»