2013-11-22 122 views
1

我有一个被通过的路线激活的控制器(见下文)我想创建一个使用此数据(一旦加载)一个指令但我有不知道如何传递这些数据/绑定它。Angularjs如何从控制器传递数据的指令

这是我的控制器:

app.controller("CampaignData" , ['$scope', 'Restangular', 'CbgenRestangular', '$http', '$q', 
    function($scope, Restangular, CbgenRestangular, $http, $q){ 

     var campaign_call = CbgenRestangular.one('api/v1/campaign', "testcamp").get(); 

     $q.when(campaign_call.then(
     function(campaign) { 
      $scope.campaign = campaign; 
      console.log(campaign); 
      } 
     )) 
     .then(function(){ 

      var cars = $http({method: 'GET', url:$scope.campaign.carlot}); 
       cars.then(function(reward){ 
      // do success things here 
      console.log(reward.data) 
       }, 
      function(reward){ 
      //do error things here 
      }); 

     }) 

     }]); 

然后在我的模板,我想要做这样的事情

{{ campaign.name }} {{ car.name }} 

甚至这个

<campaign="name"></campaign> 
<campaign="car.name"></campaign> 

如何才能做到这一点?

+2

你可以发布路由吗?或路线指向的模板?一旦将模板分配给路由,并将控制器分配给路由,则应该可以使用控制器中定义的任何范围内属性。 –

+1

“我不会**喜欢创建一个使用这些数据的指令”< - 错字? –

+0

@Emmentaler对不起,错字更新的问题。 – Prometheus

回答

4

我不希望创建一个使用此数据

没有必要创建一个指令一个指令。一旦在路由配置中声明了模板和控制器,控制器中的所有范围内属性都将为该模板生效。然后

插值这应该很好地工作:

<div>{{ campaign.name }}</div> 
<div>{{ car.name }}</div> 

如果你想在divs的一个处理一个点击事件,它应该是这样的:

<div ng-click="myFunctionInController(campaign.name)">{{ campaign.name }}</div> 

此功能会又在控制器中定义如下:

$scope.myFunctionInController = function(name) { 

    console.log(name); 
} 
+0

不要忘记将'ng-controller'指令添加到wrapping元素。 –

+1

@Emmentaler否,如果您在路由配置中定义了控制器,则不需要添加'ng-controller'。如果你这样做,你最终会得到2个控制器实例。 –

+0

@Davin Tryon对路线和控制器有意义,谢谢。所以从技术上讲,你对我有什么没有错?但是如果我想让campaign.name成为一个需要听取'点击'的按钮怎么办?这个权利需要指令吗?如果是这样的话,他们(指令和控制器)会如何知道彼此或者我的控制器的数据可以被指令使用?抱歉,所有的问题只是为了理解它。 :) – Prometheus

相关问题