2014-12-01 152 views
0

我认为我的语法正确,所以我不明白这个错误来自哪里。指向控制器的角度指令

类型错误:未定义不是一个函数在指令中发生

此错误,线13:VAR =刷新scope.reloadFunction()。

我是不是正确指向getCampaignData?

指令:

1 angular.module('sysomos.ads').directive('sysReportResubmit', ['$api', '$alerts', 
2  function ($api, $alerts) { 
3   return { 
4    restrict: 'A', 
5    scope: { 
6     reloadFunction: '&' 
7    }, 
8    link: function (scope, element) { 
9     element.on('click', function (e) { 
10      $api.put('', 'myAPICall'). 
11       success(function (data, status, headers, config) { 
12        scope.results = data; 
13        var refresh = scope.reloadFunction(); 
14        refresh.then(function() {** 
15         $(target).removeClass('panel-loading'); 
16        } 
17       }); 
18      }). 
19     } 
20    } 
21   }); 
22  }; 
23 } 

控制器

1 angular.module('sysomos.ads').controller('AudienceDetailsController', AudienceDetailsController); 
3 AudienceDetailsController.$inject = ['$scope', '$api', '$http','$state', '$q', '$filter', '$modal', 'AudienceListsService']; 
3 function AudienceDetailsController($scope, $api, $http, $state, $q, $filter, $modal, AudienceListsService) { 
4  $scope.**getCampaignData** = function(){ 
5   // reload page data 
6  } 
7 } 

HTML模板

1 <section id="details" ng-controller="AudienceDetailsController"> 
2  <a 
3   class="tabflowButton" reload-function="getCampaignData" sys-report-resubmit> 
4    Resubmit 
5  </a> 
6 </section> 

回答

0

你这里的问题是,&指表达。

传递函数名需要括号:

<section id="details" ng-controller="AudienceDetailsController"> 
    <a class="tabflowButton" reload-function="getCampaignData()" sys-report-resubmit>Resubmit</a> 
</section> 

这段视频确实帮助是明白隔离范围: https://egghead.io/lessons/angularjs-understanding-isolate-scope

+0

对,所以我做出的改变,然后我得到“类型错误:无法读属性“然后”未定义“。现在它不认识到重载功能可以保存任何东西。 – DaveC426913 2014-12-01 16:59:11

+0

您正在调用getCampaignData()函数返回的对象上的then()。确保它正在返回一个对象,并且它包含必要的功能。 – Oliver 2014-12-02 06:21:13