如何将参数传递给' ng-click' angularjs指令中的处理程序以编程方式

时间:2015-08-17 07:41:23

标签: angularjs

在我的指令中,我想添加一个' ng-click'属性为带有处理程序的图标,该处理程序接受如下ID:

icon.attr('ng-click', 'iconclick(' + node.id + ')');

但是我收到了一个错误:

Error: [$parse:syntax] http://errors.angularjs.org/1.4.3/$parse/syntax?p0=cca11656e285b0566ffde2&p1=is%20unexpected%2C%20expecting%20%5B)%5D&p2=13&p3=iconclick(55cca11656e285b0566ffde2)&p4=cca11656e285b0566ffde2)
    at Error (native)
    at http://localhost:3010/javascripts/vendor/angular.min.js:6:416
    at Object.q.throwError (http://localhost:3010/javascripts/vendor/angular.min.js:209:32)
    at Object.q.consume (http://localhost:3010/javascripts/vendor/angular.min.js:209:207)
    at Object.q.primary (http://localhost:3010/javascripts/vendor/angular.min.js:206:181)
    at Object.q.unary (http://localhost:3010/javascripts/vendor/angular.min.js:205:174)
    at Object.q.multiplicative (http://localhost:3010/javascripts/vendor/angular.min.js:204:434)
    at Object.q.additive (http://localhost:3010/javascripts/vendor/angular.min.js:204:261)
    at Object.q.relational (http://localhost:3010/javascripts/vendor/angular.min.js:204:96)
    at Object.q.equality (http://localhost:3010/javascripts/vendor/angular.min.js:203:425) <span ng-click="iconclick(55cca11656e285b0566ffde2)">

这里有什么问题?我也尝试过string.concat但结果相同。

3 个答案:

答案 0 :(得分:1)

不应该添加更多的元指令,而应该沿着以下几行编写指令:

.directive('foo', function () {
    return function (scope, element) {
        element.on('click', scope.iconclick.bind(null, element[0].id));
    };
})

换句话说,您可以直接访问范围对象及其附加功能,并可以直接触发它们。 ng-click只是在模板中以声明方式执行此操作的助手,您无需使用它来调用范围上的函数。

答案 1 :(得分:0)

尝试this.Text = string.Empty; this.ControlBox = false; this.FormBorderStyle = FormBorderStyle.SizableToolWindow; this.Left = this.Top = 0; this.Height = Screen.GetWorkingArea(this).Height; this.Width = Screen.GetWorkingArea(this).Width;

我假设您的id是一个字符串,您需要在函数的参数周围添加引号,以便将其识别为字符串。

答案 2 :(得分:0)

您可以使用on()

JQLite添加活动

Here the documentation