4
我在理解屬性值在AngularJS指令中的工作方式方面有點麻煩。無論我嘗試什麼,當我嘗試在指令控制器中使用它們時,字面屬性值都會以undefined
的形式出現。將文字屬性值傳遞給angular js指令
說,在我的HTML我envoke這樣的指令:
<div ng-controller="MyCtrl">
<my-directive reference-attr='referenceVal' literal-attr='literalVal'></my-directive>
</div>
referenceVal
和literalVal
在我的控制器都定義是這樣的:
var myApp = angular.module('myApp', []);
function MyCtrl($scope) {
$scope.referenceVal = 'This was passed by reference';
$scope.literalVal = 'This was also passed by reference, but should have been literal';
}
我嘗試接他們在我的指令:
myApp.directive("myDirective", function() {
return {
restrict: "E",
replace: true,
scope: {
referenceAttr: "=",
literalAttr: "@"
},
template: '<div><p>Reference:{{referenceAttr}}</p><p>Literal:{{literalAttr}}</p></div>',
controller: function ($scope) {
alert("ref: " + $scope.referenceAttr + ", lit: " + $scope.literalAttr);
}
};
});
輸出看起來很好:
Reference: This was passed by reference
Literal: literalVal
但警告消息是胡扯:
ref: This was passed by reference, lit: undefined
你可以自己用this JSFiddle
任何想法,爲什麼literalAttr
在指令範圍在這一點上沒有定義嘗試一下?
古代的Angular版本,如小提琴中使用的1.0.1,有一些插入指令屬性的問題(?)。最近的版本顯示預期的行爲。見[分叉小提琴](http://jsfiddle.net/cD9D2/) –
啊,謝謝Nikos,Angular JS的一個更新版本修正了它(d'oh)。你想讓這個答案,我會接受嗎? – Dave