2013-04-23 6 views
5

मैं अपने ऐप के लिए 'जैसे' फ़ंक्शन बनाने की कोशिश कर रहा हूं। मैं गतिशील रूप से जेनरेट किए गए नंबर के मूल्य को 'गिनती' के रूप में सेट करने में सक्षम होना चाहता हूं। समस्या 'एनजी-इनिट' का उपयोग करने में आती है, क्योंकि दस्तावेज कहता है कि यह करने का एक बुरा तरीका है!'व्यू' में एनजी-इनिट का उपयोग करने के लिए वैकल्पिक?

आप 'व्यूअर' के बजाय 'नियंत्रक' में मूल्य कैसे सेट करते हैं?

<!doctype html> 
<html ng-app="plunker" > 
<head> 
    <meta charset="utf-8"> 
    <title>AngularJS Plunker</title> 
    <script>document.write('<base href="' + document.location + '" />');</script> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.js"></script> 
    <script src="app.js"></script> 
</head> 
<body ng-controller="MainCtrl"> 
    <article ng-repeat="feed in feeds"> 
    <h3>{{feed.createdby}}</h3> 
    <p>{{feed.content}}</p> 
    <button ng-click="likeClicked($index)">{{isLiked[$index]|liked}}</button> 
    <span ng-init="likeCount=feed.likes.length">{{likeCount}}</span> 
    </article> 
</body> 
</html> 

धन्यवाद,

जेपी

उत्तर

3

बस

`<span ng-init="likeCount=feed.likes.length">{{likeCount}}</span>` 

प्रति

बदलने के लिए:

यहाँ मैं अब तक किया है

आप अभी भी किसी अन्य कारण से (जो मैं नहीं देख सकते हैं) के लिए नियंत्रक में गिनती की जरूरत है, एक नियंत्रक बनाने के लिए, के FeedCtrl मान लें, और अपने article में जोड़ें:

<article ng-repeat="feed in feeds" ng-controller="FeedCtrl"> 
    ... 
    <span>{{likeCount}}</span> 
</article> 

और अपने FeedCtrl होगा:

<article ng-repeat="feed in feeds" ng-controller="FeedCtrl"> 
    ... 
    <span>{{likeCount()}}</span> 
</article> 
:

function FeedCtrl($scope) { 
    $scope.$watch('feed.likes.length', function(newValue) { 
    $scope.likeCount = newValue; 
    }); 
} 

फिर भी एक और दृष्टिकोण आप मूल्य को हल करने के लिए एक समारोह का सृजन होगा

function FeedCtrl($scope) { 
    $scope.likeCount = function() { 
    return $feed && $feed.likes ? $feed.likes.length : undefined; 
    }; 
} 
+0

उत्तर के लिए धन्यवाद। मैं दूसरा दृष्टिकोण पसंद करता हूं, जिसे मैंने प्लंकर में चकित किया है: http://plnkr.co/edit/aHyxJFXVrwIGb27iK45Q?p=preview – JohnRobertPett

+0

कहता है कि फ़ीड को अपरिभाषित किया गया है ... – JohnRobertPett

+0

क्षमा करें, मेरा बुरा। यह '$ scope.feed' है। फिक्स्ड। पहली बार याद किए गए 'वापसी' को भी ध्यान दें। –

0

अपने खिलाती वस्तु हैं/सरणी लंबा है, यह बेहतर प्रदर्शन कारणों से एनजी-बाँध उपयोग करने के लिए है।

<span ng-bind="likeCount"></span> 

बजाय

{{likeCount}} 
संबंधित मुद्दे