2015-01-28 2 views
0

Итак, у меня есть небольшое приложение, в котором пользователь может играть со скидками, чтобы увидеть цену продукта. Они выбирают продукт, который появляется из раскрывающегося списка - ng-repeat, затем выбирают 1 из 3 скидок, и я хотел бы попытаться отобразить результат со скидкой. Итак, Моя первая мысль, может быть, фильтр может это сделать? Но я не понимаю, правильно ли это с этим.Угловая, фильтр для скидок - передача переменных в фильтр?

Вот что я

В контроллере -

$scope.myItems = [{"id":0,"name":"item1", "price" : 3.50 },{"id":1,"name":"item2", "price" : 5.50 },{"id":2,"name":"item 3", "price" : 4.75 }]; 
$scope.discount1 = 0.7; 
$scope.discount2 = 0.25; 
//the users information that tells us which discounts he/she has 
$scope.user = {'name' : 'Ted', 'discount1' : false, 'discount2': true}; 

Так скидки просто мультипликатором, если они выбраны, чтобы дать сниженную цену.

А на взгляд у меня есть:

<select ng-model="itemSelected" ng-options="item as item.name for item in myItems"> </select> 

, и я хотел бы сделать что-то вроде:

<p>Your price:</p> 
{{itemSelected.price | (filtered by discounts if true in $scope.user) }} 

ли что-то подобное возможно? Если это так, я мог бы действительно использовать некоторые рекомендации о том, как устранить эту проблему. Спасибо за прочтение!

ответ

2
app.filter('discount', function(){ 
    return function(input, discount){ 
    if (input) return input*(1-discount); 
    } 
}) 

В вашем HTML

{{itemSelected.price | discount : discount1}} 

Вот example

EDIT

, если вы хотите, чтобы определить скидку, используя ваш объект (который, по моему мнению, это плохо структура, но, может быть, вы для демонстрационных целей), то вы можете получить этот кусок кода в контроллере

$scope.discount = ($scope.user.discount1 && $scope.discount1)||($scope.user.discount2 && $scope.discount2) 

и использовать в HTML

{{itemSelected.price | discount : discount}} 
1

Не уверен, что вам действительно нужно фильтровать для этого, довольно легко к этому известково без одного:

<p ng-if="itemSelected && user">Your #1 price: 
    {{itemSelected.price * (user.discount1 ? 1- discount1 : 1) | number : 2}}</p> 
+0

Могли бы что-то нравится эта работа, если я было больше скидок? возможно 3-4. Благодаря! – ajmajmajma

+0

Не совсем уверен, как это работает, 4 скидки за одни и те же предметы ?. На самом деле это не имеет смысла. Даже с фильтром вы все равно должны настраивать html, так что это кажется мне так же просто. – charlietfl

+0

Не складывание, всего 4 разных, чтобы выбрать, только 1 активный. – ajmajmajma

Смежные вопросы