2014-04-26 18 views
6

Come posso aggiungere campi personalizzati a portata angolare con campi passati come gli attributi, come il seguente:AngularJs direttiva personalizzato isolato portata campi personalizzati

angular.module('app') 
    .directive("myDirective", function(){ 
     function NewObj() 
     { 
      this.id = 0; 
      this.name = ""; 
     } 
     return{ 
      restrict: "E", 
      templateUrl:"partials/directives/temp.html", 
      scope:{ 
        viewId:"=", 
        dataObj: new NewObj() //This is the custom obj 
        } 

      } 
     } 

Quando lo faccio, ottengo portata invalid isolato definizione. Come può essere realizzato?

+0

Ecco una spiegazione decente sugli ambiti direttiva: http://umur.io/angularjs-directives-using-isolated-scope-with-attributes/ –

risposta

5

L'ambito di una direttiva può essere solo uno di '=', '&', '@'. di fare ciò che si vuole, si può provare qualcosa di simile:

angular.module('app') 
.directive("myDirective", function() { 
    function NewObj() { 
     id = 0; 
     this.name = ""; 
    } 
    return { 
     restrict: "E", 
     templateUrl:"partials/directives/temp.html", 
     scope: { 
      viewId:"=",      
     }, 
     controller: ['$scope', function($scope) { 
      $scope.dataObj = new NewObj(); 
     }] 
    }; 
}); 
+0

Sfortunatamente, questo non mi consentirà di riutilizzare lo stesso controller (con diversi parametri passati nell'ambito) per più direttive. –

Problemi correlati