2015-03-25 89 views
-1

我想要訪問我的控制器內$ scope變量。當我安慰我的$範圍它顯示值的數量,但當我嘗試通過$ scope訪問它。它返回undefined。 $範圍

我附上截圖

enter image description here

在這裏,你可以看到它具有的$ id,$父,templateUrl但是當我試圖通過scope.id $,$範圍進行訪問.parent,$ scope.templateUrl它返回undefined。

編輯:

我試圖訪問模板URL。其實我要附加與模板URL一些PARAMS,這樣我可以在我的後臺功能

讓他們在這裏是我的代碼:

brainframeApp.config(
    ['$interpolateProvider', '$locationProvider', '$httpProvider', '$routeProvider', 
    function($interpolateProvider, $locationProvider, $httpProvider, 
    $routeProvider) { 
     //configuring angularjs symbos to not to conflict with Django template symbols 
     $interpolateProvider.startSymbol('{$'); 
     $interpolateProvider.endSymbol('$}'); 
     //$locationProvider.html5Mode(true).hashPrefix('!'); 
     // setup CSRF support 
     $httpProvider.defaults.xsrfCookieName = 'csrftoken'; 
     $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken'; 
     console.log("TestDavy: App"); 
     //The route provider 
     $routeProvider. 
      when('/', { 
      templateUrl: '/static/engine/partials/listbrainframes.html', 
      controller: 'brainframeCtrl' 
      }). 
      when('/brainframe/', { 
      templateUrl: '/views/post.html', 
      controller: 'brainframeCtrlx' 
      }). 
      when('/brainframe/:id', { 
      templateUrl: '/views/post.html', 
      controller: 'brainframeCtrlx' 
      }). 
      otherwise({ 
      redirectTo: '/' 
      }); 
}]); 

我的控制器:

brainframeAppControllers.controller('brainframeCtrlx', 
    ['$scope', '$routeParams', function($scope, $routeParams) { 
     //console.log($scope.parent); 
     //$scope.templateUrl = 'views/post.html?id='+$routeParams.id; 
    //console.log($scope); 
    $scope.templateUrl = 'views/post.html?id='+$routeParams.id; 
    //console.log($scope.templateUrl); 
}]); 
+0

發佈您的代碼 – Sajeetharan 2015-03-25 05:24:12

+1

你在哪裏「試圖從$ scope訪問它」? – brianvaughn 2015-03-25 05:24:20

+0

你可以通過$ scope。$ id和$ scope。$ parent來訪問它,但是你仍然希望從它得到什麼? – squiroid 2015-03-25 05:24:57

回答

1

當我在$scope上放置console.log時,只能看到以下屬性:

["$$childTail", "$$childHead", "$$nextSibling", "$$watchers", "$$listeners", "$$listenerCount", "$id", "$$ChildScope", "$parent", "$$prevSibling"] 

如果您要訪問的模板URL您的控制器內:這裏

brainframeApp.run(function($rootScope) { 
    $rootScope.$on("$routeChangeStart", function(event, next, current) { 
     $rootScope.templateUrl = next.$$route.templateUrl; 
    }); 
}); 

現在你的控制器內,注入$ rootScope並獲得模板URL

$rootScope.templateUrl 
+0

中獲得它們的一個常規問題,比方說我有兩個控制器,並且我想將第一個控制器中定義的變量值用於第二個控制器。可能嗎 ? – 2015-03-25 06:32:50

+1

大多數情況下,如果您想在控制器之間共享數據,最好爲此創建一個服務/工廠。但你也可以使用'$ controller('ControllerName',{scope:scope})共享屬性' – mohamedrias 2015-03-25 06:36:19

+1

這是一個很好的例子http://gonzalo123.com/2014/09/08/sharing-scope-between-controllers -with-angularjs/ – 2015-03-25 06:37:43