Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs $scope.watch不';t在离子框架中工作_Angularjs_Ionic Framework - Fatal编程技术网

Angularjs $scope.watch不';t在离子框架中工作

Angularjs $scope.watch不';t在离子框架中工作,angularjs,ionic-framework,Angularjs,Ionic Framework,$scope.watch在ionic框架中不起作用 我在爱奥尼亚设计了一些飞片。它不会工作。同样的代码在空白测试应用程序和angularjs上正常工作 我的html <div class="bar bar-header bar-royal"> <div class="h1 title">Hotel search</div> </div> <ion-view> <ion-content> <h4

$scope.watch在ionic框架中不起作用

我在爱奥尼亚设计了一些飞片。它不会工作。同样的代码在空白测试应用程序和angularjs上正常工作

我的html

<div class="bar bar-header bar-royal">
  <div class="h1 title">Hotel search</div>
</div>
<ion-view>
  <ion-content>

        <h4 style="margin-top:100px;color:#116262;margin-left:10px;font-weight:bold"><i class="icon ion-edit"></i> Request Form</h4>
        <div class="list" style="margin-top:15px;">

            <label class="item item-input item-select">
              <div class="input-label" style="font-weight:bold">
                City
              </div>
              <select ng-model="formData.city">
                <option value="Chennai">Chennai</option>
                <option value="Delhi">Delhi</option>
                <option value="Mumbai">Mumbai</option>
                <option value="Goa">Goa</option>
              </select>
            </label>
            <label class="item item-input item-stacked-label">
                <span class="input-label" style="font-weight:bold">CheckIn</span>
                <input type="date" ng-model="formData.checkIn"  value="{{formData.checkIn |  date:'yyyy-MM-dd'}}">
            </label>
            <label class="item item-input item-stacked-label">
                <span class="input-label" style="font-weight:bold">checkOut</span>
                <input type="date" ng-model="formData.checkOut"  value="{{formData.checkOut |  date:'yyyy-MM-dd'}}">
            </label>
            <label class="item item-input item-select">
              <div class="input-label" style="font-weight:bold">
                Rooms
              </div>
              <select ng-model="formData.room">
                <option value="1" ng-selected="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
              </select>
            </label>
            <label class="item item-input item-select">
              <div class="input-label" style="font-weight:bold">
                Adults
              </div>
              <select ng-model="formData.adult">
                <option value="1" ng-selected="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
              </select>
            </label>
            <div class="row center" style="margin-top:20px;">
                <button class="button button-outline button-block button-royal" ng-click="submit(formData)" style="text-align:center;">
                      Search
                </button>
            </div>
            {{formData}}
            <input type="text" ng-model="useStars"/>
            {{fooChanges}}
        </div>
  </ion-content>
</ion-view>

上面的代码有什么问题。。我试了很多次。它不起作用。如果你有其他想法的话???

在你的按钮中,你正在传递formData作为参数

<button class="button button-outline button-block button-royal" ng-click="submit(formData)" style="text-align:center;">
                      Search
                </button>
在这里,如果发生某个事件,在表单angularjs本身创建范围变量之前不需要$scope

但是没有发生任何事件,因此PlayCtrl无法理解$scope.formData,因此请尝试将事件设置为appeare或尝试理解


因此,这将有助于双向数据绑定

如评论中所述,通过以下操作解决了问题:

<input type="text" ng-model="$parent.useStars"/> 


但是,避免出现此问题的最佳方法是:始终使用像
$scope.data.userStarts这样的中间对象。因此,您永远不需要使用
$parent
技巧,这在Angular中称为点表示法,这是由于javascript继承的限制。

您可以将手表重写为:$scope.$watch('useStars',函数(值){alert('');},true);我也试过这个…它不起作用…怎么样?或者(以防万一)。谢谢你@Walfrat它使用$parent工作…非常感谢。。
.controller('PlaylistsCtrl', function($scope,$state) {
     formData ={};
    formData.checkIn = new Date();
    formData.checkOut= new Date();
    formData.checkOut.setDate($scope.formData.checkOut.getDate() + 1);
    formData.room = 1;
    formData.city = 'Chennai';
    formData.adult = 1;
    $scope.useStars = 'balakumaran';
    $scope.fooChanges = 1;

    $scope.$watch(function () {
        return {
            useStars : $scope.useStars,
             $state.go('app.search',{formData:formData});
        }
    },function (value) {
        alert('');
    },true);

   $scope.submit = function(formData){
      $state.go('app.search',{formData:formData});
    }
});
<input type="text" ng-model="$parent.useStars"/>