2014-12-01 161 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