2015-11-13 103 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

相关问题