先上代码:
<div ng-app=“testApp”>
<input type=“text” ng-model=“name” />
<test test-data=“{{name}}”></test>
</div>
<script>
var app=angular.module(“testApp”,[]);
app.directive(“test”,function(){
return{
restrict:”AE”,
template:”<input type=‘text’ ng-model=‘data’>”
scope:{
data:”@testData”
}
}
});
</script>
说明:单向数据绑定,使用@符号来开通与父scope的数据通道。使用@符号允许字符串通过。通常这个字符串都是以数据表达式的形式使用。
上述流程
1.使用先定义一个指令test,因为需要单向数据绑定,所以还需要自定义一个属性指令。给这个指令赋需要绑定的值。因为是单向数据绑定,所以必须要以数据表达式{{}}来表示。
Js代码中:
实例化这个指令,定义模版,用scope将模版数据绑定到指令,data:”@testData”的作用是将模版中的data与指令中的test-data的值绑定在一起。
模版相当于变成:input type=“text” ng-model=“{{name}}”
这样就能接收父scope相同的name属性值了,形成一个闭环。