2013-11-15 3 views
1

Я использую угловую директиву с Jquery DataTables, в функции mRender я использовал следующий код для отображения строк действия:Угловая директива не делает динамически

DataTables mRender функции:

var renderRowActions = function (data, type, row) { 
    //var markup = $('#rowActions').html().replace(/{rowId}/g, row[0]); 
    var markup = '<div row-actions action="delete(" + row[0] + ")" ></div>'; 
    return markup; 
}; 

директивный код:

app.directive('rowActions', function() { 
    return { 
     restrict: 'A', 
     replace: true, 
     template: '<button data-ng-click="action()"></button>', 
     scope: { 
      action: "&" 
     } 
    }; 
}); 
+0

Вы используете $ complie при добавлении разметки в dom. $ Компилировать (somehtml) (масштаб); – Rob

+0

Возможный дубликат [Динамически загруженный ящик ввода не отображается] (http://stackoverflow.com/questions/15438092/dynamically-loaded-input-box-does-nothining) – Stewie

+0

yes, $ compile (markup2) ($ scope) возвращается [object object] и $ compile (markup2) ($ scope) .html() возвращает null – user2997115

ответ

-1

Этот вопрос п стара как грязи, но здесь идет .... Для моей директивы называется «вертушка»:

{ 
    className: 'spinner-control', 
    orderable: false, 
    data: null, 
    render: function (data, type, row, meta) { 
     return '<spinner ng-model="accounts['+meta.row+'].alloc" ng-format="percentage" width="75px" step="0.5"></spinner>'; 
    } 
} 

Вы можете обновить JQuery после факта и заменить innerHTML с собранным элементом. Код написан «длинной формой», чтобы было ясно, что он делает.

$('.spinner-control').each(function(){ 
    var innerHTML = $(this); 
    console.log("InnerHTML", innerHTML); 
    var html = $compile(innerHTML)($scope); 
    console.log("HTML", html); 
    $(this).innerHTML = ''; 
    $(this).append(html); 
}); 
Смежные вопросы