gpt4 book ai didi

javascript - Angular 1.5 将带有参数的函数传递给组件?

转载 作者:行者123 更新时间:2023-11-30 08:26:10 25 4
gpt4 key购买 nike

我有一个 session 服务,如下所示,有两种方法代表两种身份验证方式:

angular
.module('myApp')
.service('sessionService', SessionService);

function SessionService() {
var $ctrl = this;

this.logInTypeA = function(username, password, authenticator) {
...
}

this.logInTypeB = function(username, password, authenticator) {
...
}

...
}

我有一个登录表单组件。我想要两个使用两种不同登录方法但其他方面相同的表单实例:

<log-in-form log-in-method="$ctrl.sessionSerive.logInTypeA"></log-in-form>
<log-in-form log-in-method="$ctrl.sessionSerive.logInTypeB"></log-in-form>

组件的 JS 看起来像这样:

angular
.module('myApp')
.component('logInForm', {
templateUrl: 'app/components/log-in-form.template.html',
controller: LogInFormController,
bindings: {
logInMethod: '&'
}
});

function LogInFormController() {
var $ctrl = this;

this.username = '';
this.password = '';
this.authenticator = '';

this.logIn = function() {
$ctrl.logInMethod($ctrl.username, $ctrl.password, $ctrl.authenticator);
};

...
}

但是,当我尝试运行它时出现错误:

TypeError: Cannot use 'in' operator to search for '$ctrl' in testloginemail@example.com

如何将服务中的方法传递给组件?

提前致谢。

最佳答案

您的 HTML 中的服务名称有错字。这是我在 Angular 1.4.x 中执行此操作的方法。

在 HTML 中,您应该添加被调用函数的参数:

<log-in-form log-in-method="$ctrl.sessionService.logInTypeA(username, password, authenticator)"></log-in-form>
<log-in-form log-in-method="$ctrl.sessionService.logInTypeB(username, password, authenticator)"></log-in-form>

对于组件,您需要在参数周围添加花括号并添加每个参数名称:

angular
.module('myApp')
.component('logInForm', {
templateUrl: 'app/components/log-in-form.template.html',
controller: LogInFormController,
bindings: {
logInMethod: '&'
}
});

function LogInFormController() {
var $ctrl = this;

this.username = '';
this.password = '';
this.authenticator = '';

this.logIn = function() {
$ctrl.logInMethod({username: $ctrl.username,
password: $ctrl.password,
authenticator: $ctrl.authenticator});
};
...
}

关于javascript - Angular 1.5 将带有参数的函数传递给组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45340854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com