我有以下指令,我想将范围内的评级变量的值传递给链接函数:
providerp01App.directive('changeColor', function(){
return{
restrict:'A',
replace:true,
scope:{
rating:'@'
},
link:function(scope, element, attrs){
console.log(scope.rating);
}//end link function
}//End return
});//End changeColor Directive
此指令的相应HTML如下:
<div change-color rating="{{provider.Ratings}}">
//Some code here
</div>
相关的工厂和控制器功能在此处:
var providerp01App = angular.module('providerp01App', []);
providerp01App.factory('providerFactory', function($http){
var providerFactory={} ;
providerFactory.getData = function(){
return $http.get('dataFiles/provider_p01.js');
}
return providerFactory;
});
providerp01App.controller('providerp01Controller', function($scope
, providerFactory){
$scope.provider;
providerFactory.getData().success(function(data){
$scope.provider=data ;
}) ;//End providerFactory.getData()
});//End providerp01Controller
最后,数据看起来像这样:
{
"title": "Alexia Nyugen",
"JobDesc": "Nutritionist",
"Rates": "$30/hr",
"Ratings": 4,
}
当我查看Angular de-bugger时,我可以看到changeColor指令确实有一个隔离范围,其评级变量的值为4.但是,我不明白为什么这个值是没有被传递到链接功能。它不会产生任何错误消息,只显示没有值。任何帮助将不胜感激。
答案 0 :(得分:0)
如果评分没有改变,我建议简单地加上
scope.ratings = attrs.rating
在你的链接功能的正文中。否则,我会在链接函数中使用$ observe
attrs.$observe('rating', function(value) {
//implement rating-dependent behavior here
}