2016-05-24 19 views
5

Bir yönergeyi oluşturmak ve bağlamak için $compile'u kullandığımda, bir özniteliği nasıl öznitelik olarak da ekleyebilirim? Değişken bir nesnedir.

var data = { 
    name: 'Fred' 
}; 

var dirCode = '<my-directive data-record="data"></my-directive>'; 

var el = $compile(dirCode)($scope); 

$element.append(el); 

Ve myDirective bekliyor olacaktır: Bunun yerine çok

`var dirCode = '<my-directive data-record="' + data + '"></my-directive>';` 

yapıyor çalıştı gelmiş

... 
scope: { 
    record: '=' 
}, 
... 

.

+0

'var verileri = {}' bağlanma iki yol almak için kontrol kapsamı ekli edilmesi gerekmektedir. Eğer iki yolla ilgilenmemeniz gerekiyorsa hacizci bir yol yapmaktır. ' –

cevap

8

Oldukça kolaydır, yeni kapsam ve veri özelliği oluşturabilirsiniz.

angular.module('app', []); 
 

 
angular 
 
    .module('app') 
 
    .directive('myDirective', function() { 
 
    return { 
 
     restrict: 'E', 
 
     template: 'record = {{record}}', 
 
     scope: { 
 
     record: '=' 
 
     }, 
 
     link: function (scope) { 
 
     console.log(scope.record); 
 
     } 
 
    }; 
 
    }); 
 

 
angular 
 
    .module('app') 
 
    .directive('example', function ($compile) { 
 
    return { 
 
     restrict: 'E', 
 
     link: function (scope, element) { 
 
     var data = { 
 
      name: 'Fred' 
 
     }; 
 
     
 
     var newScope = scope.$new(true); 
 
     newScope.data = data; 
 

 
     var dirCode = '<my-directive data-record="data"></my-directive>'; 
 

 
     var el = $compile(dirCode)(newScope); 
 
    
 
     element.append(el); 
 
     } 
 
    }; 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.js"></script> 
 

 
<div ng-app="app"> 
 
    <example></example> 
 
</div>

+0

Teşekkür ederim, bu nihayet kuruşunu düşürdü. "Kapsam" parametresi, yönergeye enjekte edilen kapsam değil, üst kapsamdır. – sbaechler

İlgili konular