【发布时间】:2025-12-01 10:55:01
【问题描述】:
我有一个带有函数参数的 AngularJS 指令,当我简单地调用该指令时它工作得很好,我想概括它。 到目前为止我得到了什么:
.directive('panelBox', function () {
return {
restrict: 'E',
scope: {
values: '=',
calculatefn: '&'
},
templateUrl: '/ProfitCalculator/PanelBox',
controller: function ($scope) {
$scope.calculate=function() {
$scope.calculatefn();
}
}
}
})
在主要范围内:
$scope.smartBookValues= {
name:'Smart Book',
text:'Smart book header',
controls:[]
};
和html:
<panel-box values="smartBookValues" calculateFn="smartBookCalculateFn()"></panel-box>
现在我正在尝试绑定值和calculateFn,所以我从calculateFn开始并做了:
$scope.smartBookValues= {
name:'Smart Book',
text:'Smart book header',
controls:[],
calculateFn:'smartBookCalculateFn()'
};
和html:
<panel-box values="smartBookValues" calculateFn="{{smartBookValues.calculateFn}}"></panel-box>
但我得到:[$parse:syntax]
语法错误:从 [{smartBookValues.calculateFn}}] 开始的表达式 [{{smartBookValues.calculateFn}}] 的第 2 列中的标记“{”无效键。
【问题讨论】:
-
您将函数作为字符串传递,您是否尝试过传递实际函数?
-
我该怎么做?
-
声明
calculateFn: function() { console.log('something') },删除 HTML 中的大括号并使用连字符传递属性,如下所示:calculate-fn="smartBookCalculateFn()"。此外,您将指令中的范围声明为calculatefn,并使用小写的f,请注意这一点。 -
现在根本不工作,无法使用该功能。而且它仍然没有绑定到存储在我的作用域中的动态函数名......
标签: angularjs angularjs-directive syntax-error