我正在构建一个愚蠢的小计算器,试图学习AngularJS。我试图用ng-click触发事件来更新我的计算器的“屏幕”。这里是我的代码:Angular click event not working,what给出?
var calcApp = angular.module('NodeCalc', []);
calcApp.controller('CalcController', ['$scope', function ($scope) {
$scope.memory = {
recall: function() {
console.log('memory recall');
},
clear: function() {
console.log('memory clear');
},
add: function(value) {
console.log('memory add');
}
}
$scope.buttons = {
memory: [
{text: 'mrc', action: $scope.memory.recall},
{text: 'm-', action: $scope.memory.clear},
{text: 'm+', action: $scope.memory.add},
]
};
}]);
<body ng-app="NodeCalc" ng-controller="CalcController">
<form class="calc">
<p class="calc-display">
<input type="text" name="res" id="res" value="0" class="calc-display-input" onfocus="this.blur()">
</p>
<p class="calc-row">
<button ng-repeat="button in buttons.memory" type="button" class="calc-button calc-button-gray" ng-click="{{button.action}}">{{button.text}}</button>
<button type="button" class="calc-button calc-button-red calc-button-big" onclick="a('/')">/</button>
</p>
所以,我知道它与我附上我的记忆功能到我的范围对象的方式去做。我不能在ng-click指令中以这种方式使用范围吗?我真的不知道如何实现我的目标。按钮呈现正确的,但我得到了我的控制台一个巨大的角度误差,BARF有关:
Error: [$parse:syntax] http://errors.angularjs.org/1.5.8/ $parse/syntax?p0=%7B&p1=invalid%20key&p2=2&p3=%7B%7Bbutton.action%7D%7D&p4=%7Bbutton.action%7D%7D
也许你的意思是'ng-click =“button.action()”' – danh
我试过了。我得到了相同的堆栈跟踪,并且它没有发生任何点击就运行这些函数......我刚刚意识到错误是一个给出更多信息的链接: 语法错误:令牌'{'表达式[ {{button.action}}]从[{button.action}}]开始。 – SpacePope
你尝试了一个文字函数吗?{text:'mrc',action:function(){alert('hi'); }},' – danh