AngularJS隔离范围变量值未在链接函数中传递

时间:2015-03-18 05:04:39

标签: angularjs angularjs-directive angularjs-scope

我有以下指令,我想将范围内的评级变量的值传递给链接函数:

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.但是,我不明白为什么这个值是没有被传递到链接功能。它不会产生任何错误消息,只显示没有值。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果评分没有改变,我建议简单地加上

scope.ratings = attrs.rating

在你的链接功能的正文中。否则,我会在链接函数中使用$ observe

attrs.$observe('rating', function(value) {
    //implement rating-dependent behavior here
}