AngularJS - 将对象传递给指令中的函数的问题

时间:2015-11-05 23:27:51

标签: javascript angularjs

我试图在指令中调用一个函数,但它没有向视图返回任何内容。

<?php 
     if ($file['name'] != 'user-directory' || $file['link'] != 'user'): 
?>

控制器:

app.directive('eventCard', function(){
return{
    restrict: 'E',
    templateUrl: 'html/eventcard.html',
    replace: true,
    scope: {

        eventObject: '=',
        getHashes: '&'
    }
    }

});

自定义指令:

app.controller('homeController', ['$scope', function($scope){



$scope.event = {
    datetime: 'FRI, 6 NOV 10:00 AM',
    title: 'Event Title goes here - lalelalela',
    address: {
        road: '650 Address Rd',
        city: 'Toronto',
        state: 'Ontario',
        postal: 'A1B1C3',
        country: 'CA'
    },
    hashes: ['#hash','#hash1','#hash2']
}

$scope.allHashes = function(event){

    var x = event;
    var collect = '';
    var link = '';

    for (i = 0; x.length < i; i++) { 

        //remove #
        link = x[i].substr(1);

        collect += "<a href='#/search/" + link + "'>" + x[i] + "</a>";

    }
        return collect;
    }

}])

指令模板:

 <event-card event-object="event" get-hashes="allHashes(hashes)"></event-card>

我无法弄清楚我在这里做错了什么。我尝试了所有我想到的可能是问题的东西。

所以基本上该函数没有向自定义指令模板返回任何内容。

1 个答案:

答案 0 :(得分:0)

你似乎没有在任何地方从指令内部调用getHashes。相反,你试图调用allHashes,这是传递给该属性的一部分。

我这样做的方法是在我的链接功能中我有这样的东西:

getHashesExp = attrs.getHashes;
getHashesFn = $parse(getHashesExp);

scope.doSomething = function doSomething() {
   getHashesFn(scope);
}

然后你从模板中调用doSomething()。

请注意,我个人不会在指令属性名称中使用驼峰案例或蛇案例。我很确定它有问题。