“ng-click”在离子框架中没有“离子内容”

时间:2016-03-26 10:32:11

标签: javascript angularjs ionic-framework ionic-view

我的离子应用程序中有一个带有ng-model属性的输入框。 Runnable标记内的代码:

try
{
   using(FBConnection con = new FBConnection('connectionstringhere'))
   {
     con.Open();
     using(FBCommand cmd = FBCommand("qryString",con))
     {
       cmd.Parameters.Add("paramSql", FbDbType.Date).Value ="somevalue";
       cmd.CommandType = CommandType.Text;
       using(FBDatareader rdr = cmd.ExecuteReader())
       {
         while(rdr.Read())
         {
          //some code here
         } 
       }
     }
   }
}
catch(FBException ex)
{
  MessageBox.Show(ex.Message);
}

页脚栏中,我有这个:

ion-content

警报结果未定义

注意:当我将<ion-content class="padding"> <input ng-model="myNumber" type="number" placeholder="Enter number"> </ion-content> 放入<div class="bar bar-footer bar-balanced" style="background-color: #00368C !important; color: #fff;"> <div class="title"> <button ng-click="submit(myNumber)" class="button button-clear">Submit</button> </div> </div> 时,它可以正常工作。 (这意味着js代码工作正常)

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

您的问题背后的原因是,ion-content directive does create a child scope原型继承自父作用域。因此,将myNumber放入输入ng-model确实会添加到ion-content的范围内,这与控制器myNumber数字范围变量不同。

为了使其正常工作,您需要在定义dot rule时遵循ng-model,以便原型继承规则得到遵循(它适用于引用类型变量)。 因此,在控制器内创建一个新对象,并将所有ng-model变量分配到其中。如下所示

$scope.model = {};

然后将您想要使用的所有属性放在$scope.model.myNumber&amp;在视图中使用它时,请使用model.myNumber

<强>标记

<ion-content class="padding">
  <input ng-model="model.myNumber" type="number" placeholder="Enter number">
</ion-content>

<div class="bar bar-footer bar-balanced" style="background-color: #00368C !important; color: #fff;">
    <div class="title">
      <button ng-click="submit(model.myNumber)" class="button button-clear">Submit</button>
    </div>
</div>

详细说明可在this answer

中找到

更优雅的方法是使用controllerAs方法。

答案 1 :(得分:0)

一个更好,更简单的解决方案,使用<ion-header-bar><ion-footer>并将所有固定的内容放在那里-然后将所有代码保留在同一控制器中。

引用自:https://stackoverflow.com/a/51785866/2036221