Я новичок в угловых. Я прочитал много блогов относительно разницы между @/=
для выделенной области действия, но все же я запутался. Вот небольшой пример, который я попробовал.Почему выделенная область (=) не работает со строками?
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<title>Directive Test</title>
<script type="text/javascript">
var app = angular.module('myApp', []);
app.controller('MyCtrl', ['$scope', function ($scope) {
}]);
app.directive('personInfo', [function() {
return {
restrict: 'EA',
scope: {
name: '=',
age: '='
},
template: "My name is {{name}} . My age is {{age}}",
link: function (scope, iElement, iAttrs) {
console.log(scope.name);
}
};
}])
</script>
</head>
<body ng-controller="MyCtrl">
<person-info name="deepak" age="25"></person-info>
</body>
</html>
Выход:
My name is . My age is 25
Я не получаю, почему имя undefined
, где, как возраст приходит в 25. Когда я делаю name: @
, все работает снова штраф.
Я не уверен, почему =
работает с числовым значением, но не с strings.I знаю @
используется для односторонней и =
используется для двусторонней привязки, но в моем примере я не имею ничего общего с родительской области.