使用$ scope.var作为参数从ng-click调用函数

时间:2016-09-05 03:18:01

标签: angularjs

使用$ scope.var作为参数从ng-click调用函数时出现此问题。

例如:

不工作:

var data = [{
    "DefaultZone": [{
        "key": "stream0",
        "value": 100
    }, {
        "key": "stream1",
        "value": 50
    }, {
        "key": "stream2",
        "value": 10
    }]
}, {
    "Zone 1": [{
        "key": "stream0",
        "value": 120
    }, {
        "key": "stream1",
        "value": 55
    }, {
        "key": "stream2",
        "value": 15
    }]
}]

final = {}
data.forEach(function(x) {
    Object.keys(x).forEach(function(y) {
        x[y].forEach(function(z) {
            if (!final[z['key']]) final[z['key']] = [];
            final[z['key']].push({
                'x': y,
                'y': z['value']
            })
        })
    })
})
answer = []
Object.keys(final).forEach(function(x) {
    answer.push({
        'key': x,
        values: final[x]
    })
})
console.log(answer)

工作:

<div ng-repeat="value in values track by $index">
        <a ng-click="function({{ value }})">{{ value }}</a>
</div>

如果变量来自$ scope,在Angular控制器上声明,为什么我们不能使用{{}}?还有其他情况我不会使用吗?

2 个答案:

答案 0 :(得分:0)

第一件事function is in built keyword。你不能使用它。

假设在控制器中你定义了这样的函数。

$scope.callMe = function(){

}

然后定义html:

<div ng-repeat="value in values track by $index">
        <a ng-click="callMe(value)">{{ value }}</a>
</div>

答案 1 :(得分:0)

我们不能在ng-click等指令中使用表达式 表达式可以从范围访问变量和函数 在函数中使用它时,不需要编写表达式