我写了以下指令:

var gameOdds = function(){
    return {
        template: '{{games["@homeTeam"]}} vs {{games["@awayTeam"]}}',
        scope: {
            games: '@'
        }
    };
};

<div game-odds games="{{games}}">


这使用以下JSON数据(下面是json的一部分):

{
    @id: "69486",
    @homeTeam: "Home Team",
    @awayTeam: "Away Team",
    otherNormalValues : {
        etc: "normal..."
    }
}


我知道直接将这些键放入绑定到控制器的HTML中时,选择以@符号开头的这些键的方法有效。但是在我的指令中,我不能以这种["@field"]方式选择字段。

有谁知道如何做到这一点?

最佳答案

范围上的@符号将您传递给属性游戏的所有内容转换为文本,并将其传递给您的指令。如果使用=符号,则可以将范围变量传递到指令中。

对于@scope.games将是一个字符串

使用=scope.games将成为您的json对象

var gameOdds = function(){
    return {
        template: '{{games["@homeTeam"]}} vs {{games["@awayTeam"]}}',
        scope: {
            games: '='
        }
    };
};

<div game-odds games="games">

关于javascript - AngularJS如何从指令访问JSON,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25806876/

10-12 12:21
查看更多