Skip to content

Commit

Permalink
大体完成MVVM
Browse files Browse the repository at this point in the history
  • Loading branch information
RubyLouvre committed Dec 11, 2012
1 parent 1db3144 commit a329118
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 9 deletions.
11 changes: 7 additions & 4 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@
click: function(e){
alert(this.className)
},
getText: function(){
alert(this.innerHTML)
},
array: ["<strong>aaa</strong>", "bbb", "<em>ccc</em>", "ddd"],
user: {
display: '编号',
Expand Down Expand Up @@ -85,25 +88,25 @@
</script>
</head>
<body id="aaa">
<p>你打算移民到哪个国家?</p>
<p>你打算移民到哪个国家?</p>
<select data-options="availableCountries" size="5" multiple="true"></select>
<div data-class="classes | log">
测试class绑定,可以同时操作多个类名,classes为一个对象
</div>
<div data-class-enabled="enabled.item" data-on-click="click" >
<div data-class-enabled="enabled.item" >
测试class绑定,每次只添加或移除一个类名,操作类名为data-class-后的值
</div>
<div data-if="show">
<p>测试基于数组的each绑定,可以在data-each-后添加你想要的参数,分别指代元素与索引值</p>
<ul data-each-item-index="array" >
<ul data-each-item-index="array" data-on-click="getText | li" >
<li><span data-html="item" ></span>:<span data-text="index"></span></li>
</ul>
</div>
<dl data-each-value-key="user">
<dt data-text="value" >测试基于对象的each绑定</dt>
<dd data-text="key">可以在data-each-后添加你想要的参数,分别指代键值与键名 </dd>
</dl>
<p data-with="coords">
<p data-with="coords">
Latitude: <span data-text="latitude">测试with绑定 </span>,
Longitude: <span data-text="longitude">测试with绑定 </span>
</p>
Expand Down
8 changes: 3 additions & 5 deletions mvvm.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,12 @@ define("mvvm","$event,$css,$attr".split(","), function($){
function getTarget (names, accessor, fn, args){
if( names ){
if( args && args[0] === Bindings.on ){
args[1] = names;
args[2] = names;
}else {
names = names.split(".");
for(var k = 0, name; name = names[k++];){
if( name in accessor){//accessor[name]可能为零
accessor = accessor[name];
//break;
}
}
if(fn && (typeof accessor != "function" || accessor.$uuid ) ){
Expand All @@ -62,8 +61,6 @@ define("mvvm","$event,$css,$attr".split(","), function($){
var match = bind[1].split(/\s*\|\s*/),
accessor = getTarget( match[0], model ),
callback = getTarget( match[1], model, true, args );
console.log(accessor)
console.log(callback)
if(accessor === void 0){//accessor可能为零
continue
}
Expand Down Expand Up @@ -107,7 +104,7 @@ define("mvvm","$event,$css,$attr".split(","), function($){
return fragment;
}

var rbindValue = /\W+/
var rbindValue = /^[\w$]+(?:(?:\s*\|\s*|\.)[\W\w]+)*$/
function getBindings( node ){
var ret = []
for ( var j = 0, attr; attr = node.attributes[ j++ ]; ){
Expand Down Expand Up @@ -506,6 +503,7 @@ define("mvvm","$event,$css,$attr".split(","), function($){
init: function(node, callback, type, selector, _, args){
type = args[0];
selector = args[1];
console.log(args)
if(selector){
$(node).on(type, selector, callback);
}else{
Expand Down

0 comments on commit a329118

Please sign in to comment.