2014-09-03 75 views
-1

我有一个向控制器提供数据的工厂,但是当我通过指令调用数据时不会绑定数据。如何从外部控制器将数据导入指令模板?

myApp.directive('user',function(){ 
    return{ 
     replace:true, 
     restrict:'E', 
     scope:{ 
     }, 
     template:'<h1>User name: {{userName}}</h1>', 
     link: function(scope,elem,attr){ 
     } 
    } 
}); 

myApp.controller('MembriController', ['$scope', 'facebook',function($scope,facebook){ 
    facebook.membersData().then(function(response){ 
     //console.log(response); 

     var obj = angular.fromJson(response); 
     var nrMembri = obj.data.length; 
     $scope.nrMembri=nrMembri; 
     $scope.users=obj.data; 
     for(var i=0; i<nrMembri; i++){ 
      var userName = obj.data[i].name; 
      $scope.userName=userName; 
     }; 
    }); 
}]); 

<div id="membri"> 
<h1>Hera are all of {{nrMembri}} members</h1> 

<div ng-repeat="user in users | orderBy:'name'"> 
    <user userName="userName"></user> 
</div> 

http://plnkr.co/edit/whAnVxy18NfhM4MtqVCl?p=catalogue

+0

可能重复http://stackoverflow.com/questions/ 25370582 /共享数据之间-A-指令和 - 一个控制器功能于不同模块) – Fedaykin 2014-09-03 14:54:05

回答

0

我建议你使用一个服务/工厂和注射它两边总是分享你的控制器和指令之间的数据。

app.factory('SharedService', function() { 
    return { 
    sharedObject: { 
     value: '', 
     value2: '' 
    } 
    }; 
}); 

app.controller('FirstCtrl', function($scope, SharedService) { 
    $scope.model = SharedService.sharedObject; 
}); 

app.directive('myDirective',['SharedService', function(SharedService){ 
    return{ 
    restrict: 'E', 
    link: function(scope){ 
     scope.model = SharedService.sharedObject; 
    }, 
    template: '<div><input type="text" ng-model="model.value"/></div>' 
    } 
}]); 

下面是一个plunkr示出如何可以实现: http://plnkr.co/edit/Q1VdKJP2tpvqqJL1LF6m

([一条指令和在不同的模块控制器之间共享数据]的
相关问题