मैं एक निर्देश बनाने की कोशिश कर रहा हूं जो उसी एनजी-मॉडल के साथ एक इनपुट फ़ील्ड बनाएगा जो निर्देश बनाता है।
यहाँ मैं क्या अब तक के साथ आया है:
एचटीएमएल
<!doctype html>
<html ng-app="plunker" >
<head>
<meta charset="utf-8">
<title>AngularJS Plunker</title>
<link rel="stylesheet" href="style.css">
<script>document.write("<base href=\"" + document.location + "\" />");</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js"></script>
<script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
This scope value <input ng-model="name">
<my-directive ng-model="name"></my-directive>
</body>
</html>
जावास्क्रिप्ट
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.name = "Felipe";
});
app.directive('myDirective', function($compile) {
return {
restrict: 'E',
scope: {
ngModel: '='
},
template: '<div class="some"><label for="{{id}}">{{label}}</label>' +
'<input id="{{id}}" ng-model="value"></div>',
replace: true,
require: 'ngModel',
link: function($scope, elem, attr, ctrl) {
$scope.label = attr.ngModel;
$scope.id = attr.ngModel;
console.debug(attr.ngModel);
console.debug($scope.$parent.$eval(attr.ngModel));
var textField = $('input', elem).
attr('ng-model', attr.ngModel).
val($scope.$parent.$eval(attr.ngModel));
$compile(textField)($scope.$parent);
}
};
});
हालांकि, मुझे विश्वास नहीं है कि यह इस परिदृश्य को संभालने का सही तरीका है, और एक बग है कि मेरा नियंत्रण एनजी-मॉडल लक्ष्य फ़ील्ड के मूल्य के साथ आरंभीकृत नहीं हो रहा है।
यहां ऊपर दिए गए कोड का प्लंकर है: http://plnkr.co/edit/IvrDbJ
इससे निपटने का सही तरीका क्या है?
EDIT : ng-model="value"
टेम्प्लेट से हटाने के बाद , यह ठीक काम कर रहा है। हालांकि, मैं इस प्रश्न को खुला रखूंगा क्योंकि मैं यह जांचना चाहता हूं कि यह ऐसा करने का सही तरीका है।
scope
इसे हटा दें और इसे सेट करेंscope: false
?ng-model
उस मामले में कैसे बांधें ?