2016-05-26 81 views
0

我對Angular + CoffeeScript相當陌生,並將其用於Rails項目。我試圖在控制器中創建一個函數,如果我在視圖中點擊按鈕,該函數將運行。CoffeeScript中無法識別角度控制器功能

這是HTML

<div id="labs"> 
    <div class="clients" ng-repeat="client in clients" ng-class="{first: $index == 0}"> 
    <h1>{{client.name}}</h1> 
    <div class="labs"> 
     <ul> 
     <li ng-repeat="lab in client.labs"> 
      <a ng-href="/#!/labs/{{lab.id}}/process"> 
      <button ng-click = "test()">Test</button> 
      <span>{{lab.name}}</span> 
      <span>{{lab.created_at | date:'MMMM yyyy' }}</span> 
      </a> 
     </li> 
     </ul> 
    </div> 
    </div> 
</div> 

這是控制器

angular.module("deloitte").controller('labsCtrl', ['$scope', 'labService','labPreferencesService', ($scope, labService, labPreferencesService) -> 

    labService.query (data) -> 
    $scope.clients = data 
    # console.print (clients) 

     $scope.test -> console.log("Hello!"); 
]) 

這是錯誤

angular.js?body=1:5755 TypeError: $scope.test is not a function 
    at new <anonymous> (labsController.js?body=1:7) 
    at invoke (angular.js?body=1:2903) 
    at Object.instantiate (angular.js?body=1:2915) 
    at angular.js?body=1:4806 
    at update (angular.js?body=1:14199) 
    at Object.Scope.$broadcast (angular.js?body=1:8308) 
    at angular.js?body=1:7464 
    at wrappedCallback (angular.js?body=1:6847) 
    at wrappedCallback (angular.js?body=1:6847) 
    at angular.js?body=1:6884 

我擡頭一看語法,它似乎是正確的。 Doing = - >也會拋出錯誤。幫助,將不勝感激

+0

您的縮進不正確。 CS中的隨機縮進導致問題。 –

+0

此外,它沒有任何意義,你需要*指定*它來測試;你沒有在控制器中傳遞'test'功能。 –

回答

1

你想撥打.test()功能$scope或定義它嗎?

$scope.test -> console.log("Hello!"); 

// Generates 
$scope.test(function() { 
    return console.log("Hello!"); 
}); 

如果要定義/分配:

$scope.test = -> console.log("Hello!"); 

// Generates 
$scope.test = function() { 
    return console.log("Hello!"); 
}; 

而這可能是你想要的。

+0

你好烏茲別克翁!正如我在文章中所說的那樣 - 它會在等號和箭頭處引發錯誤。我不確定這是否是因爲它的軌道。雖然我瞭解咖啡腳本教程概述了上面的方法。 – Shashank

+0

如果應該添加參數,我們應該怎麼做? – Shashank

+0

@Shashank \t添加參數。 –