एनजी-इनिट में कई मानों की घोषणा करें


85

तो मैं सोच रहा हूँ कि मैं कैसे एक अजीब एनजी हैश बनाने के बिना, एक एनजी-इनिट के भीतर कई मूल्यों की घोषणा कर सकता हूं, फिर मुझे हमेशा विशेष रूप से एक्सेस करने की आवश्यकता है।

इसलिए मूल रूप से मैं चाहूंगा

<div ng-init="a = 1, b = 2">{{a}}</div>

और मैं कह रहा हूं कि मैं ऐसा करने से बचना चाहूंगा

<div ng-init="unecessary_bs = {a: 1, b: 2}">{{unecessary_bs.a}}</div>

हालांकि उचित:

<div ng-init="a = 1, b = 2">{{a}}</div>

काम करने के लिए प्रतीत नहीं होता है।

प्रत्याशित धन्यवाद


"a = 1, b = 2"इसकी जावास्क्रिप्ट के बाद से उचित नहीं होगा, और अर्धविराम वे हैं जो अलग-अलग बयान देते हैं, लेकिन विचार एक ही है
बर्नार्डो दाल कॉर्नो

जवाबों:


144

फ़ंक्शन का उपयोग करें, अधिक पठनीय तरीका:

ng-init="init()"

तथा:

$scope.init = function() {
    $scope.a = 1;
    $scope.b = 2;
}

या, यदि आपको आवश्यक है, तो अर्ध-बृहदान्त्र के साथ इनलाइन चर अलग करें:

ng-init="a = 1; b = 2"

7
यह एनजी-रिपीट के लिए काम नहीं करेगा, क्योंकि इसका अपना दायरा है jsfiddle.net/U3pVM/13212
टूलकिट

एन-रिपीट के अलग-अलग दायरे के बाहर किसी फ़ंक्शन को संदर्भित करने के लिए @ टूलकिट डॉट नोटेशन (कंट्रोलर सिंटैक्स) का उपयोग करता है। किसी एनजी-रिपीट के पूर्वनिर्धारित $ इंडेक्स वर्जन को किसी फ़ंक्शन से देखें।
छल से

मूल्यांकन किस पक्ष से शुरू होता है? उदाहरण के लिए यदि मैं किसी अन्य कथन में एक चर का उपयोग करना चाहता हूं, तो मुझे अपना वक्तव्य कैसे लिखना चाहिए? ex: ng-init = "a = 12; b = 1 + a" या init = "b = 1 + a + a = 12?"? क्या यह जावास्क्रिप्ट के रूप में बाईं ओर से मूल्यांकन करता है?
पोइया

@ Пуя - मैं ऐसा मानूंगा। आप इसका परीक्षण कर सकते हैं: ng-init="c = a + b; a = 1; b = 2"और देखें कि इसका परिणाम क्या cहै - सर्वश्रेष्ठ अनुमान, यह बाएं से दाएं जाता है।
tymeJV

39

कभी-कभी किसी फ़ंक्शन में चर डालने के लिए इसका आदर्श नहीं है। उदाहरण के लिए आपका बैकएंड एक्सप्रेस में है और आप जेड का उपयोग करके एक फ़ाइल प्रदान कर रहे हैं।

Express.js के साथ आप HTML के लिए स्थानीय चर भेज सकते हैं। कोणीय इन चरों को स्वीकार कर सकता है

ng-init=""

"का उपयोग कर?" एक के कई चर हो सकते हैं

उदाहरण

ng-init=" hello='world'; john='doe' "  


3
 <div ng-app="app">
  <div ng-controller="TodoCtrl">
    <ul>
      <li ng-repeat="todo in todos" ng-init='initTodo = init(todo)'>
        <span class="done-{{todo.done}}">{{todo.text}} |
                               and todo.text via init:{{initTodo}}</span>
      </li>
    </ul>

  </div>

तथा

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

  modulse.controller("TodoCtrl", function ($scope)  {

            $scope.todos = [ {text:'todo1'}, {text:'todo2'}]; 

            $scope.init = function (todo) {  return todo.text; };

  });
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.