2014-03-27 19 views
0

我有世界上最簡單的控制器,我想訪問$範圍但它是「未定義的」,我不能,爲我的生活找出原因,然而所有的功能被稱爲corectly, DataService等工作完美,只是我沒有訪問$範圍?!

控制器代碼如下

app = angular.module("windscreens", []); 

app.controller('DamageCtrl', function($scope, DataService) { 
    $scope.setDamageLocation = function(location) { 
    DataService.getDamage().setLocation(location); 
    }; 
    $scope.isLocation = function(requiredLocation) { 
    return DataService.getDamage().getLocation() === requiredLocation; 
    }; 
    $scope.progress = function() { 
    }; 
}); 
+2

如何聲明DataService'工作時'$ scope'未定義?你的代碼在哪裏出錯? – Bart

+0

現在還沒有錯誤,我想弄清楚如何讓函數「progress」工作,然後去看看「$ scope」是什麼,並得到了未定義 - 數據服務在前端工作,什麼觸發setLocation,並消耗isLocation正在按預期工作100% – DrogoNevets

+1

您是如何*在「$ scope」查看*的。我認爲你的問題在於此。 – Bart

回答

0

要從HTML模板訪問範圍的屬性,你只需要使用屬性的名稱,你不需要寫$範圍吧。

例子:

<button ng-click="progress()"></button> 

在JavaScript中,您將只能訪問控制器及其功能裏面的$範圍。如果您調用外部資源,例如:DataService模塊,那麼它將無法訪問$ scope,除非您明確地將其作爲參數傳遞。

0

我設法使用替代語法來使它工作。如下所述,仍然不知道爲什麼它不工作,但嘿嗡嗡

app.controller('DamageCtrl', ['$scope', 'DataService', 
    function($scope, DataService) { 
    $scope.setDamageLocation = function(location) { 
     DataService.getDamage().setLocation(location); 
    }; 

    $scope.isLocation = function(requiredLocation) { 
     return DataService.getDamage().getLocation() === requiredLocation; 
    }; 

    $scope.progress = function() { 
     console.log($scope); 
    }; 
    } 
]); 
+0

這種方法是保護從代碼壓縮機注入的參數。你是否用任何方式壓縮代碼? – Bart

+0

不,我們仍然處於開發階段,我們在測試之前不會縮小 - 我不知道它爲什麼不起作用,但現在是這樣,而且實際上這種方法可以說更好,正如您所說的允許完整縮小! – DrogoNevets

相關問題