- 使用p-context设置上下文
在pandyle中,可以使用p-context为元素设置数据上下文。该元素及其子元素的数据绑定将按照上下文进行解析。
<div p-context="info">
<p>{{name}}</p>
<p>{{age}}</p>
</div>
<script>
$('div').vm({
message: 'hello world',
info: {
name: '张三',
age: 29
}
})
</script>
在p-context中,可以使用转换器对数据上下文进行转换。转换器使用管道语法data | converter书写,converter是一个转换器函数,该函数接收一个输入参数,并返回一个对象。在使用管道之前,需要先将converter注册到vm的转换器集合中。
<div p-context="info | test">
<p>{{name}}</p>
<p>{{age}}</p>
</div>
<script>
var vm = $('div').vm({
message: 'hello world',
info: {
name: '张三',
age: 29
}
}, false); //在vm函数中将autoRun设置为false,以阻止渲染。
vm.register('testConverter', function(data){ //注册转换器testConverter(转换器的命名必须以Converter结尾)
data.name = '李四';
data.age++;
return data;
})
vm.run(); //调用vm.run()进行渲染
</script>
还可以使用直接对象转换的方式对上下文进行转换。格式为data | {…}。
<div class="main">
<div p-context="info | {myName: name, myAge: age, msg: 'hello'}">
<p>{{myName}}</p>
<p>{{myAge}}</p>
<p>{{msg}}</p>
</div>
<div p-context="|{myName: '李四', myAge: 30}">
<p>{{myName}}</p>
<p>{{myAge}}</p>
</div>
</div>
<script>
$('.main').vm({
info: {
name: '张三',
age: 29
}
});
</script>