2014-02-06 35 views
1

我有一個ngRepeat,通過對象數組來查看。ngModel沒有被設置爲ngRepeat所選對象

我需要將選定的用戶對象傳遞給我的ngChange函數。

<select 
    ui-select2 
    id="entityDropDown" 
    ng-model="selectedUser" 
    ng-change="getUserInfo(selectedUser)"> 
     <option></option> 
     <option ng-repeat="user in users">{{user.name}}</option> 
</select> 

但是,ngModal只返回user.name而不是整個用戶對象。

編輯:我不能在這裏使用ngOptions,因爲我使用的select2與ngOptions不兼容不幸。

+0

使用'NG-options'這裏將實現你想要什麼。 –

+2

是的,這是我以前使用的,它工作完美,但後來我將select2引入到我的應用程序中,不幸的是,它與ngOptions不兼容。你需要設置選項值,如'

+0

{{user.name}}' – Satpal

回答

4

利用ng-value

<select 
    ui-select2 
    id="entityDropDown" 
    ng-model="selectedUser" 
    ng-change="getUserInfo(selectedUser)"> 
     <option></option> 
     <option ng-repeat="user in users" ng-value="$index"> 
       {{user.name}} 
     </option> 
</select> 

然後在你的控制器:

var app = angular.module("myApp", []) 
app.controller("MyCtrl", ['$scope', function($scope) { 
    $scope.users = [ 
     {name: 'blah blah', something: 'else'} 
    ] ; 
    $scope.getUserInfo = function(val) { 
     console.log($scope.users[val]); //logs the object value that you want 
    } 
}]); 

演示:http://jsfiddle.net/qwertynl/GENZ2/


或者,你可以這樣做:

HTML:

<select 
    ui-select2 
    id="entityDropDown" 
    ng-model="selectedUser" 
    ng-change="getUserInfo(users[selectedUser])"> 
     <option></option> 
     <option ng-repeat="user in users" ng-value="$index"> 
       {{user.name}} 
     </option> 
</select> 

JS:

var app = angular.module("myApp", []) 
app.controller("MyCtrl", ['$scope', function($scope) { 
    $scope.users = [ 
     {name: 'blah blah', something: 'else'} 
    ] ; 
    $scope.getUserInfo = function(val) { 
     console.log(val); 
    } 
}]); 

演示:http://jsfiddle.net/qwertynl/fBJYP/

+0

將我選擇的用戶設置爲字符串用戶而不是對象。 – Batman

+0

嗯,是啊,我現在看到,一秒鐘在它工作@Batman – qwertynl

+0

更新我的答案@Batman – qwertynl

相關問題