2015-09-13 4 views
0

Если у меня есть метод в мой контроллер, как:значение правопреемником двух переменных в угловых JS

var app = angular.module('App', []); 
$scope.calcoloBudget = function(davendere, offerta, budg){ 
    davendere = parseInt(davendere); 
    offerta = parseInt(offerta); 
    return budg - (offerta - davendere);  
}; 

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

<div ng-if="selectedItem3.costo < off2"{{budget3=calcoloBudget(selectedItem3.costo, off2, budget2)}}</div> 

и в другой точке зрения:

<div ng-model="budget2" ng-if="selectedItem2.costo < off1">Il tuo budget per questa busta dopo la seconda offerta è: <b>{{budget2=calcoloBudget(selectedItem2.costo, off1, budget1)}}</b> fantamilioni.</div> 

и чем я могу чем использовать эти две переменные? если да, это лучший способ сделать это?

+0

Вы, кажется, неправильно понимаете, как работают выражения. вы вообще не выполняете вычисления внутри них, они предназначены для обеспечения привязки между значением на контроллере и визуализированным представлением. – Claies

+0

ok, возможно, у меня есть некоторые сомнения ... вы можете объяснить мне, если есть способ сделать wath, я бы хотел todo (назначить результат функции двум переменным) –

ответ

0

Использование фигурных скобок связывает значение переменной рамки вашего контроллера.

, например:

В яваскрипте контроллера

angular.module('App', []) 
.controller('testController', [ 
    '$scope', 
    function($scope){ 
     $scope.testVariable = true; 
     $scope.testValue = 'Hello there'; 
]}; 

В вашем HTML

<div ng-app="App" ng-controller="testController"> 
<h1 ng-if="testVariable">{{testValue}}</h1> 
</div> 

В вашем примере, вы должны вычисления внутри вашего выражение скобки. Хотя вы можете делать простые вычисления, такие как 2 + 2 в этих скобках, мы обычно хотим привязать выражение к переменной.

То, что вы пытаетесь сделать, ставит путь ко многим вычислениям в фигурных скобках.

Я бы порекомендовал сделать что-то подобное с вашим вопросом.

1) В вашем JavaScript

angular.module('App', []) 
.controller('testController', [ 
    '$scope', 
    function($scope){ 
     $scope.costOf = 0; 
     $scope.costOf2 = 0; 
     $scope.budget = 0; 
     $scope.calcBudget = function(){ 
      $scope.budget = $scope.budget - ($scope.costOf - $scope.costOf2) 
      return; 
     } 
]}; 

2) В вашем HTML

<div ng-app="App" ng-controller="testController"> 
    <input type="number" ng-model="costOf" ng-change="calcBudget()"> 
    <input type="number" ng-model="costOf2" ng-change="calcBudget()"> 
    <h1>{{budget}}</h1> 
</div> 

Я знаю, что расчет может быть выключен и не имеет особого смысла прямо сейчас, как он относится к вашему примеру , но я изучу ваш код и попытаюсь понять смысл расчета. Код иностранного языка меня смущает.

+0

код is itian! : D, если вы хотите, я могу опубликовать свой код на английском ... спасибо! –

+0

Это было бы очень полезно. Я надеюсь, что английский не запутается. –

+0

нет нет ... даже если мой английский ужасен, я могу понять, как это происходит. благодаря! –

0

Вы можете попробовать вернуть объект вместо строки. Посмотрите на этот пример в plnkr

var app = angular.module('myApp', []); 
app.controller('AppCtrl', function($scope) { 
    $scope.returnArray = function() { 
    return { 
     var1: 'variable one', 
     var2: 'variable two' 
    } 
    } 

    $scope.getData = function() { 
    var data = $scope.returnArray() 

    $scope.var1 = data.var1 
    $scope.var2 = data.var2 
    } 
}) 
+0

ok спасибо ... это кажется полезным для меня ... но могу ли я сделать некоторый расчет перед возвратом массива? –

+0

@PierpaoloCroce Конечно, вы можете просто выполнить свою математику перед оператором return, назначить конечный результат переменной и передать ее в возвращаемый объект вместо строк примера, которые я предоставил. Не говоря уже о том, что вы можете напрямую вернуть ** функцию ** вместо строки ... – Avalanche

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