Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在控制器之间传递数据和提交函数_Javascript_Html_Angularjs - Fatal编程技术网

Javascript 在控制器之间传递数据和提交函数

Javascript 在控制器之间传递数据和提交函数,javascript,html,angularjs,Javascript,Html,Angularjs,基本上,当用户提交一个计算时,数据被保存在一个变量中。我让它在一个控制器中工作,但现在我需要在页面之间拆分它。我想用服务来做这件事。你会看到,我真的很困惑,我知道我基本上完全做错了。我不确定我将误入歧途的地方,或者我应该调查什么来更好地处理我的误解——任何帮助都是非常感谢的。即使只是一个基本指针也不错: .factory('meals', function() { var data = { basePrice: 0, taxRate: 0,

基本上,当用户提交一个计算时,数据被保存在一个变量中。我让它在一个控制器中工作,但现在我需要在页面之间拆分它。我想用服务来做这件事。你会看到,我真的很困惑,我知道我基本上完全做错了。我不确定我将误入歧途的地方,或者我应该调查什么来更好地处理我的误解——任何帮助都是非常感谢的。即使只是一个基本指针也不错:

.factory('meals', function() {
    var data = {
        basePrice: 0,
        taxRate: 0,
        tipPercentage: 0,
        mealCount: 0,
        tipTotal: 0,
        averageTip: 0,
        subtotal: 0,
        tip: 0,
        tipTotal: 0,
        total:0
    }
    function set(data) {
        savedData = data;
    }
    function get(){
        return savedData;
    }
    return {
        set: set,
        get: get
    }
})
.controller('HomeCtrl', [function(meals) {
}])
.controller('MealCtrl', [function(meals) {
    var ws = this;
    meals.set();
    ws.data = meals.get();

    ws.submit = function(){
        ws.tax_rate= ws.taxRate/100;
        ws.tip_rate= ws.tipPercentage/100;
        ws.subtotal= ws.basePrice*ws.tax_rate;
        ws.tip = ws.basePrice*ws.tip_rate;
        ws.total = ws.basePrice+ws.subtotal+ws.tip;
        ws.mealCount+=1;
        ws.tipTotal+=ws.tip;
        ws.averageTip=(ws.tipTotal+ws.tip)/ws.mealCount;
        items.tipTotal=ws.tipTotal;
        items.mealCount=ws.mealCount;
        items.averageTip=ws.averageTip;
    };

    ws.cancel = function(){
        ws.basePrice='';
        ws.taxRate='';
        ws.tipPercentage='';
    };

    ws.double = function(value){return value*2;};
}]).controller('EarningsCtrl', [function(meals) {
以及HTML:

<h2>Enter the Meal Details</h2>

<form name="Calculator" ng-submit="ws.submit()">
    <p>Base Meal Price:</p>
    <input type="number" ng-model="ws.basePrice" required> <br>
    <p>Tax Rate: %</p>
    <input type="number" ng-model="ws.taxRate" required> <br>
    <p>Tip Percentage: %</p>
    <input type="number" ng-model="ws.tipPercentage" required> <br>
    <button>Submit</button>
</form>
<button ng-click="ws.cancel()">Cancel</button>

<h2>Customer Charges</h2>
    <p>Base Price {{ws.data.basePrice | currency}}</p>
    <p>Subtotal {{ws.subtotal | currency}}</p>
    <p>Tip {{ws.tip | currency}}</p>
    <p>Total {{ws.total | currency}}</p>
输入用餐详细信息
基本餐价:


税率:%


小费百分比:%


提交 取消 客户费用 基本价格{ws.data.basePrice |货币}

小计{ws.Subtotal | currency}

提示{ws.Tip | currency}

总计{ws.Total | currency}


一个问题是
founds.set()没有任何参数,但在服务中它需要
数据
参数。该
数据
与它上面的对象
数据
不在同一范围内。所以下一行
ws.data=fines.get()
将是未定义的,我只是不知道如何在两件事之间获得基价。也许是一个更基本的问题。。。如何将data.basePrice对象放入其中一个控制器中?我不知道我在做什么更改
get()
以返回对象
函数get(){return data;}
saveData
未定义,
founds.set()
应该有一个参数
var data
从未使用过