簡體   English   中英

Angular js,$ scope的更改未反映在視圖中

[英]Angular js , $scope changes is not reflecting in view

視圖部分

 <div class="col-sm-8" data-ng-init="init_enable_disable()">
     <select class="form-control" style="margin-top: 5px;" data-ng-model="schedule.scheduleType" data-ng-change="enable_disableDiv(schedule.scheduleType);">
         <option ng-selected="{{type == defaultSelectedType}}" data-ng-repeat="type in schduleType">{{type}}
         </option>
     </select>
</div>

ng-repeat模型

 $scope.schduleType = ['Recurring', 'One time'];

我稍后會更新ng-model,但無法反映

 if (editRecord.freq_type === 1) 
 {
     alert("one time");
     $scope.schedule.scheduleType = 'One time';
 }

怎么了請建議我。

當您使用ng-model並從控制器分配值時,無需使用DOM中的ng-selected 最好從控制器初始化。

可以嘗試一下

在您的控制器中:

  $scope.schduleType = ['Recurring', 'One time'];
  $scope.schedule = {};
  $scope.schedule.scheduleType = $scope.schduleType[0]; // initial select

  $scope.enable_disableDiv = function(){
    console.log($scope.schedule.scheduleType);
  }

在HTML中:

<select class="form-control" data-ng-model="schedule.scheduleType" data-ng-change="enable_disableDiv(schedule.scheduleType)">
    <option ng-repeat="type in schduleType" value="{{type}}">{{type}}</option>
</select>

注意:如果要從控制器更改選項值,則應使用$scope.schduleType而不是someValue進行引用,因為從控制器分配值時不要引用schduleType 如要根據條件進行更改,然后使用如:

if(editRecord.freq_type === 1) {
   $scope.schedule.scheduleType = $scope.schduleType[1];// not "one Time"
}

你可以嘗試

 `$scope.$applyAsync(function(){ $scope.schedule.scheduleType = 'One time'; })` 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM