2015-10-07 16 views
0

爲什麼moo對象參數是[object Object] string?<select> getter-setter接收對象參數爲字符串

var App = angular.module('myApp', [ 
 
    'controllers']); 
 

 

 

 
var ctrls = angular.module('controllers', []); 
 
ctrls.controller('myController', ['$scope', function ($scope) { 
 
    
 
    $scope.moos = [ 
 
     {'id':1, 'name': 'foo'}, {'id':2, 'name': 'boo'} 
 
    ]; 
 
    
 
    $scope.proxy = { 
 
     setter: function (moo) { 
 
      if(!arguments.length) return; 
 
      console.log(moo); 
 
      $scope.moo = moo; 
 
     } 
 
    };  
 
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0-beta.5/angular.js"></script> 
 
<div ng-app="myApp" ng-controller="myController"> 
 
    <p>{{moo.name}}</p> 
 
    <select ng-model="proxy.setter" ng-model-options="{ getterSetter: true }"> 
 
     <option ng-selected="moo.id===m.id" ng-value="m" ng-repeat="m in moos">{{m.name}}</option> 
 
    </select> 
 
</div>

+0

也許是因爲'納克值= 「M」'和'M'是像'對象{的 'id':1, '名稱': '富'} ' – Hacketo

+0

@Hacketo我已經得到它10倍的回覆 – kidwon

回答

1

ng-value會放一個串入option的價值。而一個轉換成字符串的javascript對象是[object Object]

但是,您可以將m.id放入您的ng-value中以在您的JavaScript代碼中檢索它。這裏的一個示例:

var App = angular.module('myApp', [ 
 
    'controllers']); 
 

 

 

 
var ctrls = angular.module('controllers', []); 
 
ctrls.controller('myController', ['$scope', function ($scope) { 
 
    
 
    $scope.moos = [ 
 
     {'id':1, 'name': 'foo'}, {'id':2, 'name': 'boo'} 
 
    ]; 
 
    
 
    $scope.proxy = { 
 
     setter: function (id) { 
 
      if(!arguments.length) return; 
 
      
 
      var moo = $scope.moos.filter(function(moo) { 
 
       return moo.id == id; 
 
      })[0]; 
 
      
 
      console.log(moo); 
 
      $scope.moo = moo; 
 
     } 
 
    };  
 
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0-beta.5/angular.js"></script> 
 
<div ng-app="myApp" ng-controller="myController"> 
 
    <p>{{moo.name}}</p> 
 
    <select ng-model="proxy.setter" ng-model-options="{ getterSetter: true }"> 
 
     <option ng-selected="moo.id===m.id" ng-value="m.id" ng-repeat="m in moos">{{m.name}}</option> 
 
    </select> 
 
</div>

+0

我看到謝謝 – kidwon

+0

但是,我想如何接收對象參數呢?如果我刪除ng值,我得到'moo.name'字符串? – kidwon

+0

我編輯了我的回覆。 – Magus

相關問題