2013-10-21 3 views
6

में डाल दें, मैं एक ऐसा फ़ंक्शन बनाने की कोशिश कर रहा हूं जो आने वाले फैक्ट्री (और कुछ वास्तविक समय में क्लाइंट-साइड से) को जोड़ देगा, और रखेगा दृश्य में योग। पूरी तरह से अटक गया।कोणीय - एक फ़ंक्शन का उपयोग करके संख्याओं को जोड़कर इसे

1 - सबसे पहले, मुझे समझ में नहीं आता कि एक परिवर्तक को एक नियंत्रक फ़ंक्शन के भीतर इकट्ठा किया गया था।

$scope.total = function() { 
    var totalNumber = 0; 

} 

मैं कैसे totalNumber दृश्य में दिखाने के मिलता है:

तो चलो कहते हैं कि मैं की तरह कुछ है है?

मैं के बाद मैं इस मिल मान, ताकि मेरी फ़ैक्टरी डेटा योग करने के लिए:

$scope.total = function() { 
var totalNumber = 0; 
    for(i=0; i<revenues.length; i++){ 
     totalNumber = totalNumber + revenues[i].amount 
    } 

    } 

यह सही है:

var revenues = [ 
      { amount: 1254 }, 
      { amount: 1654 }, 
      { amount: 33 }, 
      { amount: 543 } 

    ]; 

मैं की तरह कुछ करना होगा? क्या मैं वास्तविक समय में अपडेट करूंगा यदि मैं गतिशील रूप से राजस्व सरणी बदलता हूं?

+0

आपको वैरिएबल को दायरे में बांधने की आवश्यकता है। '$ scope.totalNumber = 0'। – whirlwin

+2

जो कुछ भी परिभाषा है() आप बस {{total()}} –

+0

@whirlwin काम नहीं कर रहे हैं, इसके द्वारा अपना मूल्य प्रदर्शित करने में सक्षम होंगे .. कुछ भी नहीं दिखाता है, और यदि मैं var जोड़ता हूं तो यह एक त्रुटि फेंकता है –

उत्तर

8

जैसा कि वादा किया गया है, यहां एक अलग दृष्टिकोण है। एक यह है कि revenues संग्रह देखता है और एक मूल्य हर बार यह परिवर्तन अद्यतन करता है:

<div ng-app ng-controller="SumCtrl"> 

    Total: {{total}} 

    <input type="text" ng-model="newAmount" /> 
    <button ng-click="add(newAmount)">Add</button> 

</div> 

और जावास्क्रिप्ट:

function SumCtrl($scope) { 

    function total() { 
    var totalNumber = 0; 
    for(var i=0; i<$scope.revenues.length; i++){ 
     totalNumber = totalNumber + $scope.revenues[i].amount 
    } 

    return totalNumber; 
    } 

    $scope.revenues = [ 
    { amount: 1254 }, 
    { amount: 1654 }, 
    { amount: 33 }, 
    { amount: 543 } 
    ]; 

    $scope.add = function(value) { 
    $scope.revenues.push({ amount: parseInt(value) }); 
    } 

    $scope.$watchCollection("revenues", function() { 
    $scope.total = total(); 
    }); 

} 
+0

एक अच्छा समाधान की तरह दिखता है, हालांकि मुझे काम करने के लिए $ घड़ी चयन विधि नहीं मिल सकती है। मुझे लगता है कि यह मेरी फैक्ट्री समस्या हो सकती है? कोड: http://plnkr.co/edit/iDmphw –

+0

अंगुलर का कौन सा संस्करण आप उपयोग कर रहे हैं? मुझे लगता है कि '$ watchCollection' एक नई बात है। यह 1.2 आरसी 3 में है। मुझे नहीं लगता कि यह 1.0.8 है। यदि '$ watchCollection' उपलब्ध नहीं है, तो आप" गहरी "ध्वज सेट के साथ' $ watch' का उपयोग कर सकते हैं (हालांकि $ watchCollection बेहतर है)। '$ घड़ी (" राजस्व ", फ़ंक्शन() {}, सत्य);' –

+0

आप सही हैं। मुझे अपना संस्करण अपडेट करना होगा! (मैं रेल के साथ एक मणि का उपयोग कर रहा हूँ)।मुझे बहुत मदद करने के लिए धन्यवाद, शायद एक दिन मैं एक स्मार्ट कोणीय उपयोगकर्ता के रूप में होगा जैसा आप हैं! : डी –

0

इसे हल करने के कई दृष्टिकोण हैं। यदि आप एक total() समारोह चाहते हैं, यह इस प्रकार है:

<div ng-app ng-controller="SumCtrl"> 

    Total: {{total()}} 

    <input type="text" ng-model="newAmount" /> 
    <button ng-click="add(newAmount)">Add</button> 

</div> 

और यहाँ कोड है:

function SumCtrl($scope) { 

    $scope.revenues = [ 
    { amount: 1254 }, 
    { amount: 1654 }, 
    { amount: 33 }, 
    { amount: 543 } 
    ]; 

    $scope.total = function() { 
    var totalNumber = 0; 
    for(var i=0; i<$scope.revenues.length; i++){ 
     totalNumber = totalNumber + $scope.revenues[i].amount 
    } 

    return totalNumber; 
    } 

    $scope.add = function(value) { 
    $scope.revenues.push({ amount: parseInt(value) }); 
    } 

} 

total() समारोह होगा फिर से मूल्यांकन के लिए जब भी गुंजाइश परिवर्तन (एक बहुत)। revenues में परिवर्तनों को देखने और एक स्थिर मूल्य अपडेट करने के लिए एक बेहतर तरीका है ... मैं भी उस उत्तर को पोस्ट करूंगा।

0

यहाँ एक plunker

वहाँ एक से अधिक तरीका यह है, और आपका कंट्रोलर आपके कारखाने से डेटा कैसा दिखता है इस पर निर्भर करता है।

संपादित करें: लिखते समय यहां कुछ अच्छे उत्तर पोस्ट किए गए थे। यह ब्रायन के पहले दृष्टिकोण के समान है।

संबंधित मुद्दे

 संबंधित मुद्दे