2014-09-23 113 views
0

我正在開發一個具有角度的應用程序,並且我想在編輯頁面中的對象變量上執行一些數學運算。更改函數中的範圍數據

例如,當我得到我的建議(對象)時,我想在頁面加載時設置proposition.marge_theorique這樣的proposition.marge_theorique= 2 * proposition.marge_grille

我做的第一件事是我得到的對象與API,然後我打電話給我的功能calcul()必須做數學。

我的問題是,我不知道如何告訴calcul改變$ scope.proposition。

這裏是我的代碼

'use strict'; 

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

app.controller('propositionCtrl',['$scope', 'propositionRepository', '$http', 
    function ($scope, propositionRepository, $http) { 
     // $scope.proposition = { marge_propose: 3 }; 



     //////////////////////////////DEFINITIONS//////////////////////////////////// 
     $scope.submit = function() { 
      $http.put('/api/propositionapi', $scope.proposition); 
     } 




     function getProposition() { 
      propositionRepository.getProposition(function (result) { 
       $scope.proposition = result; 

      } 
      ) 
     } 

     function calcul(contexte) { 
      contexte.proposition.marge_theorique = contexte.proposition.marge_grille * 2; 
     } 

     ///////////////////////////////UTILISATION/////////////////////////////////// 
     console.log("on est dans la page"); 
     getProposition(); 
     calcul($scope); 
; 
    }]) 

app.factory('propositionRepository', function ($http) { 
    return { 
     getProposition: function (callback) { 
      $http.get('/api/propositionapi/3').success(callback); 
     } 
    } 
}) 

我也試着做這樣

 function calcul() { 
      $scope.proposition.marge_theorique = $scope.proposition.marge_grille * 2; 
     } 

,然後就打電話calcul(),但它不工作,要麼...

我該怎麼辦?

非常感謝!

回答

1

getProposition調用本質上是異步的,您需要等待響應可用。您可以使用回調。更新getProposition函數。

function getProposition() { 
      propositionRepository.getProposition(function (result) { 
       $scope.proposition = result; 
       calcul($scope); 
      }) 
     } 

並從結束控制的

+0

由於它的工作原理getProposition();後進行通話calcul($scope);! 事情是,當用戶在編輯頁面中更改proposition.marge_grille的值時,必須調用calcul。 我不知道該怎麼做... – Krowar 2014-09-23 08:01:23

+0

我不知道你的應用程序的結構,但看看角度的手錶。他們可以跟蹤模型更改並觸發事件處理程序。 – Chandermani 2014-09-23 08:56:07