在angularjs中自定义ng-repeat

时间:2015-02-23 08:39:32

标签: angularjs angularjs-directive angularjs-ng-repeat

我有一个示例anjularjs示例,它拉出了sku详细信息数组,显示选择下拉列表中的价格和名称。 现在我在下拉列表中选择了任何选项,它显示了sku名称和价格。

下面是我的选择标签,现在显示,sku名称带价格。

<select ng-model="selectedItem">
     <option ng-repeat="item in skulist.sku" value="{{item.price + ' - ' + item.name}}">{{item.price + ' - ' + item.name}}</option>
</select>

以下是我的skulist数据:

skulist.sku[0].name="First sku";
skulist.sku[0].price = Rs.100;
skulist.sku[1].name="Second sku";
skulist.sku[1].price = Rs.200;
skulist.sku[2].name="Third sku";
skulist.sku[2].price = Rs.300;

所以这里我的要求是下拉列表应包含sku名称和价格,但是一旦选择了值,则只显示sku名称。

2 个答案:

答案 0 :(得分:0)

您可以将sku列表创建为复杂对象。

$scope.skulist = [{"name": "First", "price": "Rs.100"},
                  {"name": "Second", "price": "Rs.200"},
                  {"name": "Third", "price": "Rs.300"}
];

在您的ng-repeat中,您可以访问:

<select ng-model="selectedItem">
     <option ng-repeat="item in skulist" value="{{item.price + ' - ' + item.name}}">{{item.price + ' - ' + item.name}}</option>
</select>

希望它可以帮到你。

答案 1 :(得分:0)

您应该在select中使用ng-options。这样您就可以动态获取选项。您还可以通过向选择添加ng-change事件来跟踪所选项目。

您的问题:显示名称而不是名称价格。您必须创建另一个选项并将该选项的文本设置为项目名称。

我已经创建了一个简单的小提琴供您参考。希望这能让你越来越接近解决方案

https://jsfiddle.net/YameenYasin/9a5nfugo/44/

<div ng-controller="myController">
<select ng-model="selectedItem" 
        ng-options="item as item.price + ' ' + item.name for item in skulist"  ng-change="updateText(selectedItem.name)"

    >
        <option value=''>{{selectedValue}}</option>
</select>
</div>

var app = angular.module('app',[]);
app.controller("myController",function($scope){
        $scope.skulist = [{"name": "First", "price": "Rs.100"},
                  {"name": "Second", "price": "Rs.200"},
                  {"name": "Third", "price": "Rs.300"}
        ];    
    $scope.selectedValue = '';
    $scope.updateText = function(name){      
       $scope.selectedValue = name;
       $scope.selectedItem = $scope.selectedValue;       
    }
});