angularjs
  • angularjs-directive
  • 2014-01-30 55 views 4 likes 
    4

    我在理解屬性值在AngularJS指令中的工作方式方面有點麻煩。無論我嘗試什麼,當我嘗試在指令控制器中使用它們時,字面屬性值都會以undefined的形式出現。將文字屬性值傳遞給angular js指令

    說,在我的HTML我envoke這樣的指令:

    <div ng-controller="MyCtrl"> 
        <my-directive reference-attr='referenceVal' literal-attr='literalVal'></my-directive> 
    </div> 
    

    referenceValliteralVal在我的控制器都定義是這樣的:

    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在指令範圍在這一點上沒有定義嘗試一下?

    +0

    古代的Angular版本,如小提琴中使用的1.0.1,有一些插入指令屬性的問題(?)。最近的版本顯示預期的行爲。見[分叉小提琴](http://jsfiddle.net/cD9D2/) –

    +0

    啊,謝謝Nikos,Angular JS的一個更新版本修正了它(d'oh)。你想讓這個答案,我會接受嗎? – Dave

    回答

    3

    這是最古老的Angular版本的問題,例如:在小提琴中使用的1.0.1。最近的版本顯示預期的行爲。

    相關問題