Javascript 在什么情况下需要同时使用编译和;角函数

Javascript 在什么情况下需要同时使用编译和;角函数,javascript,angularjs,Javascript,Angularjs,这是我在Angular中的自定义指令。我是个新手 app.directive('customer',function() { var directive = {}; directive.restrict = 'E'; directive.template = "Customer name : <b> {{customer.custName}} </b> , Customer Email : <i> {{customer.custEmail}} </i

这是我在Angular中的自定义指令。我是个新手

app.directive('customer',function()
{
var directive = {};

directive.restrict = 'E';

directive.template = "Customer name : <b> {{customer.custName}} </b> , Customer Email : <i> {{customer.custEmail}} </i>";

directive.scope = {
    customer: "=name"
}

directive.compile = function(element, attributes)
{
    element.css("border", "1px solid #f00");
    var linkFunction = function($scope,element,attributes)
    {
        element.html("Customer name : <b>"+ $scope.customer.custName +"</b> , Customer Email : <i>"+ $scope.customer.custEmail+" </i>");
        element.css("background-color", "#ff0");
    }

    return linkFunction;
}

return directive;

既然transclude参数可用于link函数(我相信是1.2版),那么编译函数就没有什么用处了

虽然它可以让您在处理link函数之前完成工作,但在没有多少有价值的工作要做的时候,它却出现了。例如,绑定已被处理

如果您使用transclusion并坚持使用Angular pre 1.2的某个版本,那么范围尚未绑定这一事实可能会很有用,但是由于您可以通过link函数访问transclude函数,现在我仍然看不到它有多大用处

至于各种指令属性的用途,我将看一看

链接函数为我们注册事件侦听器和操作DOM元素提供了一种干净、简单的方法

scope属性允许您配置指令将使用的AngularJS范围对象。它可以采用布尔值true(作用域与父级共享)、false(指令的作用域与父级的作用域隔离)或对象

directive.scope
directive.compile
var linkfunction