2015-03-20 3 views
2

Я знаю, что если у меня есть директива в HTML, я могу передать объекты от моего $ рамки к нему:

<mydirective some-data="someData"></mydirective> 

... где someData может быть JSON объект ,

Возможно ли передать ссылку на someData, если я создаю директиву динамически и использую $compile?

$scope.someData = { firstName: 'John', lastName: 'Doe' }; 

var link = $compile("<mydirective some-data='???'></mydirective>"); 
var content = link($scope); 
$(body).append(content); 
+2

Вы пробовали '' $ compile (""); ''? (имя var, которое вы только что установили в '' $ scope'') – jlowcs

+0

@jlowcs omg, что было так просто, и теперь это так очевидно. Огромное спасибо. – n4cer500

+0

@jlowcs вы должны добавить это как ответ, проще и понятнее найти его – MisterJ

ответ

-2

Да, вы можете передать объект

var myApp = angular.module('myApp',[]); 
 

 
myApp.directive('passObject', function() { 
 
    return { 
 
     restrict: 'E', 
 
     scope: { obj: '=' }, 
 
     template: '<div>Hello, {{obj.prop}}!</div>' 
 
    }; 
 
}); 
 

 
myApp.controller('MyCtrl', function ($scope) { 
 
    $scope.obj = { prop: "world" }; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.12/angular.min.js"></script> 
 
<div ng-controller="MyCtrl"> 
 
    <pass-object obj="obj"></pass-object> 
 
</div>

var myApp = angular.module('myApp',[]); 
 

 
myApp.directive('passObject', function() { 
 
    return { 
 
     restrict: 'E', 
 
     scope: { obj: '=' }, 
 
     template: '<div>Hello, {{obj.prop}}!</div>' 
 
    }; 
 
}); 
 

 
myApp.controller('MyCtrl', function ($scope) { 
 
    $scope.obj = { prop: "world" }; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.14/angular.min.js"></script> 
 
<div ng-controller="MyCtrl"> 
 
    <pass-object obj="obj"></pass-object> 
 
</div>

директива

Смежные вопросы