1

只要我点击我的提交按钮什么都没有发生,目前我所要做的就是打印出用户名和密码来测试那里的绑定。 而且我可以与控制器通话并打印出我在控制器中制作的硬编码消息,看起来ng-click不会在该方法上触发。 任何帮助将是巨大的, 感谢:dNg-Click没有触发

<section id="register-view" class="mainbar"> 
    <section class="matter"> 
     <div class="container"> 
      <div class="row"> 
       <label>{{vm.message}}</label> 
       <form class="register-form"> 
        <label name="username_label"> Username: </label> 
        <input type="text" name="username" ng-model="vm.userDetails.username"/> 
        <br/> 
        <label name="password_label"> Password: </label> 
        <input type="text" name="password" ng-model="vm.userDetails.password"/> 
        <br/> 
        <button type="submit" class="btn btn-default" ng-click="vm.submitUserDetails()">Submit</button> 
       </form> 

      </div> 
     </div> 
    </section> 
</section> 

和控制器类

(function() { 
    'use strict'; 

    angular 
     .module('app.register') 
     .controller('RegisterController', RegisterController); 

    RegisterController.$inject = ['$q', 'dataservice', 'logger']; 
    /* @ngInject */ 
    function RegisterController($q, dataservice, logger) { 
     var vm = this; 
     vm.message = 'baass'; 
     vm.userDetails = { 
      username: '', 
      password: '' 
     } 

     function activate() { 
      var promises = [submitUserDetails()]; 
      return $q.all(promises).then(function() { 
       logger.info('Activated Dashboard View'); 
      }); 
     } 

     function submitUserDetails() { 
      console.log('Username: ' + vm.userDetails.username); 
      console.log('Password: ' + vm.userDetails.password); 
     } 
    } 
})(); 
+0

检查控制台,你在页面中没有任何错误 –

+0

我有没有什么会在控制台 –

回答

3

您需要在控制器上下文添加submitUserDetails,使其可以在视图,因为你只定义的函数submitUserDetails。您应当在参考绑定到vm.submitUserDetails

vm.submitUserDetails = submitUserDetails; 
0

功能需要连接到$范围

$scope.function submitUserDetails() { 
     console.log('Username: ' + vm.userDetails.username); 
     console.log('Password: ' + vm.userDetails.password); 
    } 
+0

这是部分正确的,他正在使用'control as'。要使用'$ scope',他需要将'$ scope'扩展到他的控制器中,在这种情况下可能不需要。 – Malkus

+0

你是说他需要添加$ scope作为控制器依赖项吗? – WesW

+0

正确,那就是它会继承所有的父'$范围' – Malkus

0

你似乎有一些问题与您的代码,但是最大的是那些功能实际上并没有附加到'this'(vm,正如你在代码中所称的那样)。因此,它们不能被范围访问,因为它们只能在RegisterController函数内访问。

为了解决这个问题,我会将此代码添加到您的函数的底部:

this.activate = activate; 
this.submitUserDetails = submitUserDetails; 

同时,submitUserDetails()应该返回一个承诺,不是吗?我预计这也会造成一些怪异的行为。

+0

不,这只是一个测试,看看我的绑定是否正在工作,我什么也没有返回 –