मुझे नहीं लगता कि आप फिर से लोड() विधि सीधे ट्रिगर कर सकते हैं, क्योंकि यह नियंत्रक जो निर्देशों के भीतर ही दिखाई दे रहा है का हिस्सा है।
आप या तो हो सकता है ...
ए) ट्रिगर तत्व, jQuery शैली के माध्यम से एक बार पुनः लोड करने चिनाई का सीधे
(http://jsfiddle.net/riemersebastian/rUS9n/10/ देखें):
$scope.doReloadRelatively = function(e) {
var $parent = $(e.currentTarget).parent().parent();
$parent.masonry();
}
$scope.doReloadViaID = function() {
$('#container').masonry();
}
बी) या निर्देशों का विस्तार करें, यानी चिनाई-ईंट पर आवश्यक घड़ियों को जोड़ें और पुनः लोड() विधि को कॉल करें (आपके उपयोग के मामले पर निर्भर करता है)।
.directive('masonryBrick', function masonryBrickDirective() {
return {
restrict: 'AC',
require: '^masonry',
scope: true,
link: {
pre: function preLink(scope, element, attrs, ctrl) {
var id = scope.$id, index;
ctrl.appendBrick(element, id);
element.on('$destroy', function() {
console.log("masonryBrick > destroy")
ctrl.removeBrick(id, element);
});
scope.$watch(function() {
return element.height();
},
function (newValue, oldValue) {
if (newValue != oldValue) {
console.log("ctrl.scheduleMasonryOnce('layout');");
ctrl.scheduleMasonryOnce('layout');
}
}
);
...
ऊपर कोड ब्लॉक में, मैं बस एक घड़ी वर्ग की चिनाई की ईंटों से 'के साथ तत्व पर आदेश जब भी तत्वों' ऊंचाई में परिवर्तन चिनाई का एक पुनः लोड को गति प्रदान करने में जोड़ दिया है।
मैं passys 'परीक्षण के लिए एक jsFiddle बना लिया है कोणीय चिनाई अपने आप को, चेक करें के लिए स्वतंत्र महसूस!
http://jsfiddle.net/riemersebastian/rUS9n/10/
संपादित करें:
बस stackoverflow पर एक समान पद जो इस समस्या का एक समाधान हो सकता है पाया:
AngularJS Masonry for Dynamically changing heights
हालांकि दस्तावेज नहीं यह काम करता है। सूचक के लिए धन्यवाद। मुझे इसे काम करने के लिए $ टाइमआउट नहीं देना पड़ा था, इसलिए आप सही हैं (आपके पास आपके विशिष्ट सेटअप के साथ कुछ करना है)। – cristiano2lopes