scope中的参数问题
老师能帮忙解答下 scope:{ flavor :"=" } 为什么要给flavor赋值? flaor再这里代表的是什么?
老师能帮忙解答下 scope:{ flavor :"=" } 为什么要给flavor赋值? flaor再这里代表的是什么?
2015-08-18
下面是使用@的写法
<div ng-controller="MyCtrl">
<drink hahaha="{{ctrlFlavor}}"></drink>
</div>
var myModule = angular.module("MyModule", []);
myModule.controller('MyCtrl', ['$scope', function($scope){
$scope.ctrlFlavor="百威";
}])
myModule.directive("drink", function() {
return {
restrict:'AE',
scope:{
papapa:'@hahaha'
}
template:"<div>{{papapa}}</div>",
}
});
<div ng-controller="MyCtrl">
<drink hahaha="{{ctrlFlavor}}"></drink>
</div>
var myModule = angular.module("MyModule", []);
myModule.controller('MyCtrl', ['$scope', function($scope){
$scope.ctrlFlavor="百威";
}])
myModule.directive("drink", function() {
return {
restrict:'AE',
template:"<div>{{papapa}}</div>"
,
link:function(scope,element,attrs){
scope.papapa=attrs.hahaha;
}
}
});
首先,flavor是一个属性名,这个属性的值就是controller里$scope.ctrlFlavor的值。
<drink flavor="{{ctrlFlavor}}"></drink>指令就是为了替换上面这段代码,
myDemo.directive('drink', function () {
return {
restrict: 'AE',
scope: {
flavor: '@'
},
template: '<div>{{flavor}}</div>',
link: function (scope, element, attr) {
scope.flavor = attr.flavor;
}
}
}); template: '<div>{{flavor}}</div>' // 这里flavor就是scope.flavor;而 scope.flavor = attr.flavor; 就是等于 {{ctrlFlavor}} (controller里的$scope.ctrlFlavor)
为了不每次都写一个link,(太麻烦)
于是, 在@的情况下
scope: {
flavor: '@'
},就是等于link里面的
scope.flavor = attr.flavor;
一句话总结:这三个地方的flavor就是一个东西,你可以把他们一起换个名字flavor2 什么的,试试
//1
scope: {
flavor: '@'
},
//2
template: '<div>{{flavor}}</div>',
//3
<drink flavor="{{ctrlFlavor}}"></drink>我也是刚学习,那里理解错了请指教。
举报