okay 发表于 2015-11-26 14:28:43

在state中配置controller问题

我在state里面配置了controller: home然后在home里面有一个input ng-mode为a 在JS中的controller中的$scope.a 并不能获取到a的值。打印出来是undefined.

但是如果我不在state里面配置controller,直接把controller写在ion-content上,a的值能获取。(但我不能这么写,这样写的话不能用到$ionicView.beforeEnter方法)

.state("home", {
    url: "/home",
    templateUrl: "templates/home.html",
    controller:"home"
})
.controller("home",["$scope","$rootScope","data","$ionicLoading","$state","$ionicHistory",function($scope,$rootScope,data,$ionicLoading,$state,$ionicHistory){
    $scope.$on('$ionicView.beforeEnter', function() {
      $ionicLoading.show({
            template: '加载中...'
      });
      
      $scope.a = function(){
            console.log($scope.asd);
      }
    });
}])
<ion-view view-title="...">
    <ion-nav-buttons side="left">
      <button class="button button-icon button-clear ion-navicon" menu-toggle="left"></button>
    </ion-nav-buttons>
    <ion-content>

      <input type="text" ng-model="asd">
      <button ng-click="a()">aaa</button></ion-content></ion-view>

跨平台移动开发 发表于 2015-11-26 14:45:22

首先需要在controller 中定义 $scope.asd=''   然后才可以获取到这个值

okay 发表于 2015-11-26 14:48:06

跨平台移动开发 发表于 2015-11-26 14:45
首先需要在controller 中定义 $scope.asd=''   然后才可以获取到这个值
我在input上不是已经有了ng-model="asd"吗? 只是一个input,在ng中的双向绑定嘛,input输入值,然后$scope.asd获取,这是ng的基本双向绑定? 怎么在这里就不行了?
如果按照你说的先定义的话,肯定打印出来就是定义的值,而不是input输入的值。

okay 发表于 2015-11-26 16:45:31

以为是自己代码影响到了,我重新建了一个项目,就用ionic最开始的文件做了下试验。
.controller('DashCtrl', function($scope) {
$scope.asd = "";
$scope.a = function(){
    console.log($scope.asd);
}

})

tab-dash.html里面的

<input type="text" ng-model="asd" ng-change="a()">

最后打印依然是空,我是哪里写错了吗? 我在写其他ng项目的时候这样写是ok的。

okay 发表于 2015-11-26 17:02:08

百度了一下午,终于在https://www.zhihu.com/question/36960249 这里找到解决办法,有遇到的可以看看哈。
页: [1]
查看完整版本: 在state中配置controller问题