2015-11-06 57 views
2

我正在使用jtable.js。我已經設法使用jquery構建原型,並且它工作正常,但現在我正試圖在Angular中導入它。爲此,我正在創建一個指令。 首先下面的代碼顯示了我使用JQuery所做的工作。在angularjs中使用jtable.js

在HTML中: -

<div id="mainTable"></div> 

在Javascript中: -

var mainTable = $("#mainTable"); 
// Initialize jtable 
mainTable.jtable("{ 
title: 'Table title', 
actions: { 
     listAction: URL, 
}, 
fields: { 
    Child: { 
     title: '', 
     display: openChild, // OpenChild is a function to get child grid layout 
     visibility: 'fixed' 
    }, 
    Name: { 
     title: 'Name' 
    } 
} 
}") 

// OpenChild的定義

function OpenChild(childData) { 
    var $img = $('<img src="imagePath"/>'); 
    $img.click(function(){........} 
    return $img; 
} 

要角,我包裹它用它一個將jtable配置作爲屬性值的指令。類似以下內容: -

<div id="mainTable" jtable-Configuration="{ 
title: 'Table title', 
actions: { 
     listAction: URL, 
}, 
fields: { 
    Child: { 
     title: '', 
     display: openChild, // Where/How to define openChild in angularjs so external library (jtable.js) can call it. 
     visibility: 'fixed' 
    }, 
    Name: { 
     title: 'Name' 
    } 
} 
}"></div> 

的問題是,我不知道我怎樣才能讓JTable的庫調用OpenChild方法。我應該在哪裏指定這種方法。在指令裏面?作爲HTML文件中的JavaScript函數?

請注意,我的指令是很簡單的: -

(function() { 
'use strict'; 
angular 
    .module('myApp') 
    .directive('jtableConfiguration', jTableFunc); 

function jTableFunc() { 
    var directive = { 
     link: link, 
     restrict: 'A' 
    }; 
    return directive; 

    function link(scope, element, attrs) { 
     $(element).jtable(scope.$eval(attrs.jTable)); 
    }}(); 

而且,任何人都可以提出這是否是使用第三方庫的正確方法?

回答

0

我會把openChild方法放在你使用指令的範圍上 - 所以它在控制器中定義爲該html。

您正在使用範圍$ eval來評估範圍上下文中的參數,因此您應該可以在範圍內使用方法。

見$ EVAL