2017-07-25 77 views
3

上午,這裏發生了什麼。ng點擊和/或ng變化

我做了一個開發,它工作正常,但只與Firefox。 當我用鉻測試它...它根本不工作。

所以,我有一個選擇,我想保存選定的值來處理它。

這裏是我的角度:

if ($scope.dateTemp == "") { 
    $scope.displayNotification('error', "Empty date"); 
} else { 
    alert($scope.dateTemp); 
    //dateTemp treatment 
} 

$scope.saveDate = function(dateMin){ 
      alert(dateMin); 
      $scope.dateTemp=dateMin; 
     }; 

我的觀點:

<p>Select date 
    <br/> 
    <select ng-model="date_selection" ng-change="saveDate(dateMin)"> 
     <option ng-repeat="dateMin in listeDate" track by $index>{[{dateMin}]}</option> 
    </select> 
</p> 

當我嘗試這樣做,我得到了我的警覺不確定的(順便說一句saveDate功能只是一個設置器$scope.dateTemp

此外,當我嘗試這個,它工作正常,但不與鉻。

<select ng-model="date_selection"> 
     <option ng-click="saveDate(dateMin)" ng-repeat="dateMin in listeDate" track by $index>{[{dateMin}]}</option> 
    </select> 

感謝您的意見。

+5

你有語法錯誤。它應該是ng-repeat =「dateMin在listenDate軌道由$ index」 – Vivz

+0

我做到了,但我仍然越來越undefined當我試圖打印dateMin – Minirock

+2

你應該打印它像{{dateMin}} not {[{dateMin }]} – Vivz

回答

1

track by $index應該包含在ng-repeat指令中。

<select ng-model="date_selection" ng-change="saveDate(dateMin)"> 
     <option ng-repeat="dateMin in listeDate track by $index">{[{dateMin}]}</option> 
</select> 

track byng-repeat指令,它有助於在陣列中找出獨特的每個項目的選項。

短的例子:

function TodoCtrl($scope) { 
 
    $scope.date_selection; 
 
    $scope.listeDate = ['date1','date2']; 
 
    $scope.saveDate=function(date_selection){ 
 
    console.log(date_selection); 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app> 
 
    <h2>Todo</h2> 
 
    <div ng-controller="TodoCtrl"> 
 
    <select ng-model="date_selection" ng-change="saveDate(date_selection)"> 
 
     <option ng-repeat="dateMin in listeDate">{{dateMin}}</option> 
 
    </select> 
 
    {{date_selection}} 
 
    </div> 
 
</div>

我測試它,它在瀏覽器和Mozilla的作品。

+0

我這樣做了,但我仍然沒有定義,當我試圖打印dateMin – Minirock

+0

我應該saveDate(date_selection)? – Minirock

+0

@Minirock,當然,看看回答。 –

2

您還可以使用select標籤內NG選項

控制器:

app.controller('MainCtrl', function($scope) { 
    $scope.listeDate = [{"value":1,"text":"date1"}, 
    {"value":2,"text":"date2"}, 
    {"value":3,"text":"date3"}, 
    {"value":4,"text":"date4"}]; 

    $scope.Print=function(){ 
    alert($scope.selected); 
    } 
}); 

HTML:

<body ng-controller="MainCtrl"> 
    <select ng-options="date.value as date.text for date in listeDate" ng-model="selected" ng-change="Print()"></select> 
    </body> 

工作plunker link