更改函数中的范围数据

时间:2014-09-23 07:36:02

标签: angularjs angularjs-scope

我正在开发一个带角度的应用程序,我想对编辑页面中的对象变量进行一些数学运算。

例如,当我得到我的命题(对象)时,我想在页面加载时设置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 个答案:

答案 0 :(得分:1)

getProposition调用本质上是异步的,您需要等待响应可用。您可以使用回调。更新getProposition功能。

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

并从控制器

结束后删除calcul($scope);之后完成的调用getProposition();