2014-01-16 153 views
1

更新为我对问题有些疑惑。我想使用一个指令来将一个变量注入到该指令所使用的控制器中。我意识到我可以使用$ scope,但我没有找到这个直观的解决方案。从角度指令向角度控制器注入变量


本质上我想让我的控制器将提议变量注入到它中。

我的预期用法:

<blah-directive proposal="proposal"></blah-directive> 

的指令(到目前为止):

app.directive('blahDirective', function() { 
    return { 
     restrict: 'E' 
     , transclude: true 
     , replace: true 
     , scope: { 
      proposal: '=' 
     } 
     , templateUrl: 'blahTemp.html' 
     , controller: blahController 
    }; 
}); 

blahTemp.html

<form class="form-horizontal" role="form" name="myBidForm"> 
    **{{ proposal }}**  
</form> 

这显示在$范围值提议变量很好,但这不是我想要的。基本上我想定义就像我的控制器:

var blahController = function($scope, SomeOtherResource, proposal) { 


} 
+0

为什么要注入TE指令?您的指令使指令在范围内可用。只要使用$ scope.proposal = .. – JvdBerg

+0

是的 - 我不认为这个解决方案是控制器方面的明显解决方案。如果有人拿起控制器,他们可能不会阅读文档,也不知道该变量是如何进入范围的。 – akaphenom

+0

我不明白你想要做什么。注入到控制器的范围是独立的范围(因为它是指令的控制器),那么为什么要对父范围进行双向数据绑定? –

回答

3

如果要注入当地人到控制器中使用$controller

下面是一个例子(plunker):

app.directive('blahDirective', function ($controller) { 
    return { 
    restrict: 'E', 
    scope: { 
     proposal : "=" 
    }, 
    transclude: true, 
    replace: true, 
    templateUrl: 'blahTemp.html', 
    link : function (scope, elm, attrs){ 
     scope.proposal = {}; 
     var locals = { 
     $scope: scope , 
     proposal: scope.proposal 
     }; 
     $controller('blahController', locals); 
    } 
    }; 
}); 
+1

这看起来是我正在寻找。我得到一个“未知提供商proposalprovider”,所以我认为我输入了错误的东西。我知道这是我的最终目标 - 普朗克是有道理的,所以我需要深入了解我做错了什么。 – akaphenom

+0

检查你的当地人的对象 –