2016-05-24 18 views
5

जब मैं $compile का उपयोग बना सकते हैं और एक निर्देश बाध्य करने के लिए, मैं कैसे भी एक विशेषता के रूप में एक चर जोड़ सकते हैं के रूप में एक वस्तु के साथ एक निर्देशक संकलन? चर एक वस्तु है।

var data = { 
    name: 'Fred' 
}; 

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

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

$element.append(el); 

और myDirective उम्मीद की जाएगी:

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

मैं

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

बजाय भी कर की कोशिश की है।

+0

'वर डेटा = {}' अपने नियंत्रक दायरे से जुड़ी होने के लिए दो तरह से बाध्यकारी होने की जरूरत है। आप न परवाह अगर के बारे में दो तरह से एक hackier तरह से बाध्यकारी करने के लिए 'है <निर्देश डेटा रिकॉर्ड = \' $ {JSON.stringify (डेटा)} \ '>' –

उत्तर

8

यह सिर्फ नई गुंजाइश है और उस पर सेट डेटा संपत्ति बनाने के काफी आसान है,।

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

धन्यवाद, कि अंत में पैसा ड्रॉप कर दिया। 'Scope' पैरामीटर माता पिता गुंजाइश, नहीं गुंजाइश कि निर्देश में इंजेक्ट किया जाता है। – sbaechler

संबंधित मुद्दे