<commit_before># AXBinder

Simple two way binding javascript, jQuery plugin

[![axisj-contributed](https://img.shields.io/badge/AXISJ.com-OpensourceJavascriptUILibrary-green.svg)](https://github.com/axisj) ![](https://img.shields.io/badge/Seowoo-Mondo&Thomas-red.svg)

http://axisj.github.io/AXBinder/


## dependencies
- jQuery
- Mustache - dist/AXBinder.min.js 내장

# API

## Install
```html
<!DOCTYPE html>
<html lang="en">
<head>

	<meta charset="UTF-8">
	<title></title>
	<script src="plugins/jquery/jquery.min.js"></script>

    <!-- this mustache is imporoved version you must use this version ! -->
	<script src="plugins/mustache/mustache.js"></script>
	<script src="src/AXBinder.js"></script>

	<!-- or use min file -->
	<!-- this file include mustache
    <script src="dist/AXBinder.min.js"></script>
	-->
</head>
```

## Methods

### AXBinder.set_model(Object, jQueryObject) : Model
바인딩할 자바스크립트 오브젝트로
제이쿼리로 검색된 HTML dom 엘리먼트 에 바인딩합니다.
바인딩된 모델을 반환합니다.

```html
<div id="form-target">
	<input type="text" data-ax-path="name" class="AXInput"/>
	<input type="text" data-ax-path="email" class="AXInput"/>
</div>
```

```js
var obj = {
	name: "Thomas",
	email: "<EMAIL>
}
var myModel = AXBinder.set_model(obj, $("#form-target"));
```

### AXBinder.update_model(Object) : Model
이미 바인딩되어 있는 바인더에 오브젝트를 변경할 때에 사용합니다.
```js
if(window.myModel){
	myModel.update_model(obj);
}
```

### Model.set(data_path, value) : Model
data_path에 값을 변경한다. value의 타입은 (String, Number, Array, Object)를 지원.

```js
myModel.set("name", "Seowoo");
```

### Model.get([data_path]) : String|Number|Array|Object
data_path에 값을 반환한다. data_path 가 없으면 전체 Object를 반환한다.

```js
var value = myModel.get("name"); // Seowoo
```

### Model.onchange(data_path, callBack) : Model
data_path에 값이 변경되는 이벤트 발생하면 callBack을 실행합니다.

```js
myModel.onchange("name", function () {
    console.log(this);
    // el: domElement - 변경이 발생한 엘리먼트, 엘리먼트로 부터 다양한 속성을 추출할 수 있다.
    // jquery : jQueryObject
    // tagname: "input"
    // value: "changed value"
    console.log(this.el.id);
});
myModel.onchange("*", function (n) {
    console.log(n);
    // console.log(this); 와 동일
});
```

### Model.onclick(data_path, callBack) : Model
data-ax-repeat="list" 속성이 부여된 엘리먼트 하위에 태그중에 data-ax-repeat-click 속성을 가진 아이템에 대해 클릭 이벤트 발생하면 callBack을 실행합니다.

```js
myModel.onclick("list", function () {
    console.log(this);
    /*
    el: domElement
    jquery: jQueryObject
    item: Object - repeat item
    item_index: "0" - index of item
    item_path: "list[0]" - repeat data_path
    repeat_path: "list"
    tagname: "button"
    value: "add"
    */
});
```


### Model.add(repeat_path, Object) : Model
data-ax-repeat="list" 하위 아이템을 추가합니다.
```js
myModel.add("list", {a:1});
```

### Model.remove(repeat_path, index) : Model
data-ax-repeat="list" 하위 아이템을 제거합니다. 단! 이 때 __ADDED__ 값을 가진 아이템은 제거하고 그렇지 않은 아이템은 __DELETED__ 값을 아이템에 추가합니다.
```js
myModel.remove("list", 0);
```
### Model.update(repeat_path, index, Object) : Model
data-ax-repeat="list" 하위 아이템을 교체합니다.
```js
myModel.update("list", 0, {a:1});
```

### Model.child_add(repeat_path, repeat_item_index, child_key, Object) : Model
data-ax-repeat="list" 하위 아이템중 child_key의 하위아이템을 추가합니다.
```js
myModel.child_add("list", 0, "child", {a:1});
```

### Model.child_remove(repeat_path, repeat_item_index, child_key, child_index) : Model
data-ax-repeat="list" 하위 아이템중 child_key의 하위아이템을 제거합니다. 단! 이 때 __ADDED__ 값을 가진 아이템은 제거하고 그렇지 않은 아이템은 __DELETED__ 값을 아이템에 추가합니다.
```js
myModel.child_remove("list", 0, "child", 0);
```
### Model.child_update(repeat_path, repeat_item_index, child_key, child_index, Object) : Model
data-ax-repeat="list" 하위 아이템중 child_key의 하위 아이템을 교체합니다.
```js
myModel.child_update("list", 0, "child", 0, {a:1});
```
<commit_msg>model.update(data_path[, index, item]) 으로 스펙 변경<commit_after># AXBinder

Simple two way binding javascript, jQuery plugin

[![axisj-contributed](https://img.shields.io/badge/AXISJ.com-OpensourceJavascriptUILibrary-green.svg)](https://github.com/axisj) ![](https://img.shields.io/badge/Seowoo-Mondo&Thomas-red.svg)

http://axisj.github.io/AXBinder/


## dependencies
- jQuery
- Mustache - dist/AXBinder.min.js 내장

# API

## Install
```html
<!DOCTYPE html>
<html lang="en">
<head>

	<meta charset="UTF-8">
	<title></title>
	<script src="plugins/jquery/jquery.min.js"></script>

    <!-- this mustache is imporoved version you must use this version ! -->
	<script src="plugins/mustache/mustache.js"></script>
	<script src="src/AXBinder.js"></script>

	<!-- or use min file -->
	<!-- this file include mustache
    <script src="dist/AXBinder.min.js"></script>
	-->
</head>
```

## Methods

### AXBinder.set_model(Object, jQueryObject) : Model
바인딩할 자바스크립트 오브젝트로
제이쿼리로 검색된 HTML dom 엘리먼트 에 바인딩합니다.
바인딩된 모델을 반환합니다.

```html
<div id="form-target">
	<input type="text" data-ax-path="name" class="AXInput"/>
	<input type="text" data-ax-path="email" class="AXInput"/>
</div>
```

```js
var obj = {
	name: "Thomas",
	email: "<EMAIL>
}
var myModel = AXBinder.set_model(obj, $("#form-target"));
```

### AXBinder.update_model(Object) : Model
이미 바인딩되어 있는 바인더에 오브젝트를 변경할 때에 사용합니다.
```js
if(window.myModel){
	myModel.update_model(obj);
}
```

### Model.set(data_path, value) : Model
data_path에 값을 변경한다. value의 타입은 (String, Number, Array, Object)를 지원.

```js
myModel.set("name", "Seowoo");
```

### Model.get([data_path]) : String|Number|Array|Object
data_path에 값을 반환한다. data_path 가 없으면 전체 Object를 반환한다.

```js
var value = myModel.get("name"); // Seowoo
```

### Model.onchange(data_path, callBack) : Model
data_path에 값이 변경되는 이벤트 발생하면 callBack을 실행합니다.

```js
myModel.onchange("name", function () {
    console.log(this);
    // el: domElement - 변경이 발생한 엘리먼트, 엘리먼트로 부터 다양한 속성을 추출할 수 있다.
    // jquery : jQueryObject
    // tagname: "input"
    // value: "changed value"
    console.log(this.el.id);
});
myModel.onchange("*", function (n) {
    console.log(n);
    // console.log(this); 와 동일
});
```

### Model.onclick(data_path, callBack) : Model
data-ax-repeat="list" 속성이 부여된 엘리먼트 하위에 태그중에 data-ax-repeat-click 속성을 가진 아이템에 대해 클릭 이벤트 발생하면 callBack을 실행합니다.

```js
myModel.onclick("list", function () {
    console.log(this);
    /*
    el: domElement
    jquery: jQueryObject
    item: Object - repeat item
    item_index: "0" - index of item
    item_path: "list[0]" - repeat data_path
    repeat_path: "list"
    tagname: "button"
    value: "add"
    */
});
```


### Model.add(repeat_path, Object) : Model
data-ax-repeat="list" 하위 아이템을 추가합니다.
```js
myModel.add("list", {a:1});
```

### Model.remove(repeat_path, index) : Model
data-ax-repeat="list" 하위 아이템을 제거합니다. 단! 이 때 __ADDED__ 값을 가진 아이템은 제거하고 그렇지 않은 아이템은 __DELETED__ 값을 아이템에 추가합니다.
```js
myModel.remove("list", 0);
```
### Model.update(repeat_path[, index, Object]) : Model
data-ax-repeat="list" 하위 아이템을 교체합니다.
```js
myModel.update("list", 0, {a:1});
```

### Model.child_add(repeat_path, repeat_item_index, child_key, Object) : Model
data-ax-repeat="list" 하위 아이템중 child_key의 하위아이템을 추가합니다.
```js
myModel.child_add("list", 0, "child", {a:1});
```

### Model.child_remove(repeat_path, repeat_item_index, child_key, child_index) : Model
data-ax-repeat="list" 하위 아이템중 child_key의 하위아이템을 제거합니다. 단! 이 때 __ADDED__ 값을 가진 아이템은 제거하고 그렇지 않은 아이템은 __DELETED__ 값을 아이템에 추가합니다.
```js
myModel.child_remove("list", 0, "child", 0);
```
### Model.child_update(repeat_path, repeat_item_index, child_key, child_index, Object) : Model
data-ax-repeat="list" 하위 아이템중 child_key의 하위 아이템을 교체합니다.
```js
myModel.child_update("list", 0, "child", 0, {a:1});
```

{'fraction_non_alphanumeric': 0.17996264674493062, 'fraction_numerical': 0.003735325506937033, 'mean_word_length': 4.283298097251586, 'pattern_counts': {'":': 0, '<': 49, '<?xml version=': 0, '>': 49, 'https://': 6, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2668280', 'n_tokens_mistral': 3523, 'n_tokens_neox': 3816, 'n_words': 685}