6

विशेषता परिवर्तन के लिए देखने के लिए सबसे अच्छा तरीका है, एक कुंजी दबाने घटना पर आधारित आदर्श अद्यतन हैं जो, माता पिता के नियंत्रक में गुंजाइश के लिए बाध्य कर पता लगाने के लिए संघर्षकोणीय कस्टम निर्देश परिवर्तन विशेषता मान

मैं हर 'उदाहरण चाहते हैं विशेषता मूल्य उदाहरण अपडेट करके अपना स्वयं का 'हैफोकस' गुण बदलने के निर्देश का

<menu has-focus="{{ true }}" ></menu> 
<menu has-focus="{{ false }}" ></menu> 
<menu has-focus="{{ false }}" ></menu> 

टेम्पलेट:

<div class="menu"> 
<ul> 
    <li ng-repeat="option in menu.options" ng-class="{ 'focused' : hasFocus }" tabindex="{{ $index }}"> 
     <div class="icon">{{ $index+1 }}</div> 
    </li> 
</ul> 

और इतने केवल 1 निर्देश मूल्य किसी एक समय में 'सही' के बराबर हो सकता है।

मैं एक कस्टम निर्देश

.directive('menu', function() 
{ 
    restrict : 'E', 
    templateUrl : 'partials/menu-left.html', 
    replace : true, 
    scope : { 
     hasFocus : '@' 
    }, 
    link : function($scope, element, attrs) 
    { 
    attrs.$observe('hasFocus', function(value) { 
     console.log(value); 
    }); 
    } 

}) 

है, लेकिन नहीं कर सकते मूल्य $ से निरीक्षण विधि $ घड़ी, लेकिन अभी भी फ्लॉप काम नहीं यकीन है कि क्या मैं गलत कर रहा हूँ उपयोग करने की कोशिश को निकालने के लिए लग रहे हैं!

+0

आप' का उपयोग कर रहे hasFocus देखा/स्ट्रिंग के रूप में झूठे मूल्य। आपको एचटीएमएल –

+0

पर 'हैसफोकस: "=" 'और' हैस-फ़ोकस = "सत्य" का उपयोग करके ऑब्जेक्ट्स के रूप में प्राप्त करने की आवश्यकता है धन्यवाद ओमरी - बहुत अच्छा काम करता है - पूरी तरह से काम करता है, हाँ अलग-अलग स्कोप विकल्पों से भ्रमित हो गया है! – SteveP124

उत्तर

1

अगर आप @ बंधन, आप $ उपयोग करने के लिए इस तरह देखना हो सकता है का उपयोग करें:

<menu has-focus="true" ></menu> 
: यह है कि अगर काम नहीं करता है

$scope.$watch(function(){ 
    return attrs.hasFocus; 
}, function(val) { 
    $scope.hasFocus = val; 
}); 

, या आप दो तरह से = साथ बंधन पसंद करते हैं

और

.directive('menu', function() 
{ 
    restrict : 'E', 
    templateUrl : 'partials/menu-left.html', 
    replace : true, 
    scope : { 
     hasFocus : '=' 
    }, 
    link : function($scope, element, attrs) 
    { 
    // $scope.hasFocus holds true/false 
    } 

}) 

मुझे लगता है कि दो तरह से बाध्यकारी बूलियन्स ख के साथ बेहतर विशेष रूप से है पारिस्थितिकी अगर आपको केवल यह नियंत्रित करने की आवश्यकता है कि डोम कैसा दिखता है, तो आपको बदलाव के लिए भी देखने की आवश्यकता नहीं है, आपको बस $ scope में प्लग करना होगा। कहीं भी डीओएम में फोकस करें (एनजी-शो, एनजी-स्विच इत्यादि। ।)

संपादित करें: जो सच लेता @ `: हाँ, मैं सिर्फ अपने टेम्पलेट, इसलिए यदि आप दो तरह से बाध्यकारी (=) का उपयोग आप घड़ी की जरूरत नहीं है

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