0

场景: 我正在尝试访问 ng-Model 对象 (myRide) 的属性(代码)。

  1. 我试过这样做

    <select ng-model = "myRide" 
      ng-change = "getCode(myRide.code)"> 
    

    ...在 getCode 处,

    alert(parameter) //which should be myRide.code.

  2. 我也试过这样做

    <select ng-model = "myRide" 
      ng-change = getCode(myRide)
    

    (注意:'myRide' 被传递,而不是 'myRide.code')......并且在 getCode,

    alert(myRide.code).

myRide 确实包含一个名为“code”的属性,它不是未定义的。

问题:两次尝试都没有产生想要的结果。


我怎样才能让它显示属性(代码)?

这是 JSFiddle:http: //jsfiddle.net/a2J6z/1/

4

2 回答 2

2

更好的方法是重构视图。不要在 select 中的选项上使用 ng-repeat,而是使用 ng-options 指令。然后,您可以将实际对象绑定到模型,而不仅仅是一个 JSON 字符串,这就是您当前的小提琴正在做的事情。

您的新选择看起来像

<select ng-options="car.Name for car in myGarage" ng-model="myRide" ng-change="getCode(myRide)"> 

</select>

然后在你的控制器中

$scope.getCode = function(car){
    alert(car.code);
}

更新的小提琴:

http://jsfiddle.net/a2J6z/5/

于 2013-06-28T02:18:48.083 回答
1

我更新了小提琴:

http://jsfiddle.net/a2J6z/3/

var ngApp = angular.module('ngAppl',[]);

function aControlla($scope){

    $scope.myRide = "bus";

    $scope.getCode = function(car){
        alert(JSON.parse(car).code);
    }

    $scope.myGarage = [
        {Name: "Toyota 86", code:"1"},
        {Name: "Hyundai Genesis Coupe", code:"2"},
        {Name: "Nissan GTR", code:"3"},
        {Name: "Veyron", code:"4"}
    ];
};

<div ng-app="ngAppl">
    <div ng-controller="aControlla">

        <select ng-model="myRide" ng-change="getCode(myRide)">

            <option ng-repeat="car in myGarage">{{car}}</option> 
            <!--Note: value of myRide MUST be simply 'car' (not say, 'car.Code')-->

        </select>

        <br/> This shows that 'myRide' contains the property called 'Name', and importantly, 'code':<br/> {{myRide}}




    </div>
</div>

基本上我只是让它以 myRide 作为参数来提醒它是什么车,它显示了 JSON 字符串,所以我添加了解析以获取它给我的代码。可以这么说,我是 AngularJS 菜鸟可能有更好的方法。

于 2013-06-28T02:16:11.567 回答