【问题标题】:$scope.form contains field names but not values$scope.form 包含字段名称但不包含值
【发布时间】:2014-06-20 19:50:19
【问题描述】:

我无法通过$scope.form 获取表单值。在视图和 Batarang 中,我看到表单对象对所有字段都有正确的名称,但没有值。另一方面,实际表单字段中的值是正确的,$scope.mymodel.headline 值也是正确的(参见下面的示例)。

为什么会这样?

以下是 1 个字段的示例。蝙蝠镖输出:

{ 
  mymodel:  { 
    headline: My value
  } 

  form:  { 
    mymodel[headline]:  {  } 
  } 
}

如果我在它显示的视图中输出{{form}}

mymodel[headline]:  {  } 

控制器代码很简单:

@mymodelCtrl = ['$scope', ($scope) ->
  $scope.init = (mymodel) ->
    $scope.mymodel = mymodel
]

大大简化的 HTML:

<div id="new_mymodel" ng-controller="mymodelCtrl" 
  ng-init="init({'headline': 'my value'})" class="ng-scope">
  <form action="/myurl" id="new_mymodel" method="post" name="form" role="form">
    <input id="mymodel_headline" name="mymodel[headline]" 
      ng-model="mymodel.headline" ng-required="true" type="text">
    <input type="submit">
  </form>
</div>

更新:起初我认为接受的答案是错误的,但那是因为一个附带问题。但这是正确的:问题是开发人员控制台和batarang 和视图显示错误,而不是该字段为空。我需要使用$scope.form["mymodel[headline]"].$formVaue

【问题讨论】:

    标签: javascript html angularjs batarang


    【解决方案1】:

    你可以从中得到它的价值

    $scope.form['mymodel[headline]'].$modelValue
    

    this

    【讨论】:

    • 你的表单不是在 ui-bootstrap modal 里面吗?在其中初始化表单存在一些问题。如果没有,你能提供一个小提琴吗?
    • 好吧,我遇到了麻烦。 :) 最简单的方法是在模板渲染后重新初始化表单。在控制器中:$scope.setForm = function(form){$scope.yourFormName = form;}; 和模态模板的底部,在之后:{{setForm(yourFormName)}}
    • 你完全正确,我的错。问题是 angular 不能很好地对字段对象进行字符串化,因此它在batarang 中显示为空白并在控制台中打印“未定义”。在视图或控制器中使用 $modelValue 效果很好。我在指令中的陈述也认为它是未定义的,但这是出于不同的原因。
    猜你喜欢
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 2023-04-07
    • 2019-06-01
    相关资源
    最近更新 更多