2015-04-03 48 views
10

沒有深入瞭解爲什麼,我需要在我的控制器中爲$scope提供別名。而不是注入和裝飾$scope我希望用戶能夠注入view並使其具有相同的效果。

根據我對角度的理解,$scope$scopeProvider創建,它是在角度應用的配置時間註冊的工廠。我假設我需要註冊一個viewProvider並將其設置爲$scopeProvider,但我沒有運氣與我一直在嘗試。有任何想法嗎?

僅供參考:我不是在尋找類似['$scope', function(view){...的東西,理想的解決方案可以與['view', function(view){...一起使用。視圖對象將充當正是$scope,雙向綁定等

+1

使用該別名是否需要像$ scope這樣的雙向綁定相同的東西? – Samir 2015-04-03 06:43:07

+0

是的。我希望獲得與'var view = $ scope'相同的效果 – Arbiter 2015-04-09 15:08:48

+0

擴展您想要模擬被動服務的原因。我可以理解嘲笑像在你的沙箱外的http這樣的主動服務。但範圍服務僅僅是存儲在其中的容器,應該在uoir單元測試中與生產中一樣使用。 – 2015-04-09 15:40:36

回答

0

我能夠解決它在我的應用程序的配置部分。在我的控制器中,我可以使用$scopeview,它們具有相同的含義。

$routeProvider 
    .when('/Index', { 
     templateUrl: "/views/index.html", 
     controller: ['$scope', '$controller', function($scope, $controller){ 
      $controller("IndexController", {$scope:$scope, view: $scope}); 
     }] 
    }) 
+0

但是最後你在'view'對象中注入'$ scope' – 2015-04-10 16:10:49

+0

我也在注入$ scope,所以你可以使用「$ scope」或「view」來引用scope對象。這正是我想要做的,讓我真正的控制器定義使用「視圖」而不是'$ scope',並且它意味着同樣的事情。 – Arbiter 2015-04-10 16:25:39

+0

那麼你的問題確實問了一些問題,而你想要其他東西 – 2015-04-10 16:52:36

2

有沒有這樣的事$scopeProvider,示波器使用$new方法,每個範圍都有通過繼承獲得此方法(代表團創建確切地說)。當您在控制器中要求$scope時,$scope是使用其父母$scope$new方法動態創建的,並以該名稱注入。要用不同的名稱調用上述行爲,你將不得不使用角內部。

+0

謝謝,任何想法會怎麼做呢? – Arbiter 2015-04-09 15:09:34

10

如果你所教的AngularJS,你實際上應該避免使用$scope和使用controller as syntax - See this awesome Angular Style Guide by John Papa for explanation

這也將解決您的問題:)

+0

這非常有幫助,我會閱讀它。謝謝! – Arbiter 2015-04-13 18:22:15

+0

@Arbiter不客氣:)讓我知道你是否需要任何幫助。 – 2015-04-14 06:22:32

相關問題