【问题标题】:Cannot acces form state on a directive Controller无法访问指令控制器上的表单状态
【发布时间】:2016-08-28 15:32:39
【问题描述】:

我正在使用 Angularjs v1.2.21,我无法访问指令内的表单状态,而其他版本也可以使用(我无法更改项目 Angularjs 版本)...我在下面创建了一个 plunkr:

plunkr

.directive('testReplace', function () {
return {
  restrict: 'EA',
  replace: true,
  scope:{ 
     transaction: '=',
     isvalid: '='
  },
  templateUrl: 'modal-back.html',
    controller: function($scope) {
      console.log($scope.myForm)
    }
  };
})

【问题讨论】:

    标签: angularjs angularjs-directive


    【解决方案1】:

    使用链接功能代替控制器:http://plnkr.co/edit/EI8qVhh9pOBiEtD4koGB?p=preview


    link: function(scope){
           console.log(scope.myForm)
    }
    

    【讨论】:

    • 感谢您的帮助。这对我行得通!这很奇怪,因为在其他版本中,我可以使用控制器访问该表单状态。
    • 我还有一个问题,如果我需要使用 Controller 和 Link 我得到一个编译错误。这是正常的
    • @John:你为什么要两个?你得到什么错误?
    【解决方案2】:

    $scope.myForm 在那里,我相信这是因为您需要使用链接而不是控制器,除非您正在等待表单中发生某些事情(例如单击事件或其他事情)。所以试着把它改成这个

    来自:

    controller: function($scope){
    

    到:

    link: function($scope){
    

    你使用链接是因为链接阶段是你实际附加数据的时候,所以当你登录时你会看到正确的信息

    plunkr:http://plnkr.co/edit/eCW1lrsS5GTbmoA9JAcL?p=preview

    另外,如果你想准备更多,控制器 vs 链接 vs 编译,这里有一个很棒的线程:AngularJS : link vs compile vs controller

    【讨论】:

    • 感谢您的帮助。这对我行得通!这很奇怪,因为在其他版本中,我可以使用控制器访问该表单状态。
    • 我还有一个问题,如果我需要使用 Controller 和 Link 我得到一个编译错误。这是正常的
    • @John 错误在说什么?还有为什么两者兼而有之?控制器里能做的事,链接里都能做。
    • 如果我使用链接,我也可以私有范围?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 2015-06-28
    • 1970-01-01
    相关资源
    最近更新 更多