2015-11-13 226 views
0
(function() { 
'use strict'; 

angular.module('app') 
    .controller('someController', ['$scope','localStorageService',someController]) 
    .directive('someDirective', someDirective) 

function someController($scope, localStorageService){ 
    $scope.something = { 
     someVar: localStorageService.get('someVar'), 
    }; 
    console.log("someVar: " + $scope.something.someVar);//prints correct value 
} 

function someDirective(){ 
    return { 
     template: {{something.someVar}} 
    }; 
} 

})(); 

在HTML,其中,增加訪問範圍變量從控制器的指令在angular.js

<div ng-controller="someController"> 
    <div some-directive></div>  
</div> 

,我不斷收到一個「參數‘someController’是不是一個功能,得到了未定義」即使someController在打印到控制檯時執行得很好。

+0

是行'模板:{{something.someVar}}'一個在這裏輸入錯誤或者是你真的錯過了報價?應該是:'template:'{{something.someVar}}''。 – Claies

+0

@Claies Ahhh yess就是這樣! – Yan

回答

2

有模板這裏指令的申報錯誤。

template: {{something.someVar}}缺少引號。

它應該是:template: '{{something.someVar}}'

0

你可以試試嗎? 這應該是工作

.controller('someController',someController) 
.directive('someDirective', someDirective); 

someController.$inject = ['$scope','localStorageService']; 
0

移動創建的控制器和指令的函數聲明的下一行:

function someController($scope, localStorageService){ 
    $scope.something = { 
     someVar: localStorageService.get('someVar'), 
    }; 
    console.log("someVar: " + $scope.something.someVar);//prints correct value 
} 

function someDirective(){ 
    return { 
     template: {{something.someVar}} 
    }; 
} 

angular.module('app') 
    .controller('someController', ['$scope','localStorageService',someController]) 
    .directive('someDirective', someDirective); 
+0

^沒有必要,也不是問題的原因。也是一種醜陋的編碼慣例。你的問題在別處。 – trickpatty