2017-03-02 157 views
0

我的指令在js文件中有单独的控制器,它具有需要从调用页面填充的范围变量parameterDatabase。我无法找到将价值传递给它的方式。将范围变量传递给指令的控制器

<body ng-app="testAPP" ng-controller="ctl"> 
Directive Here 
<my-cust parameterDATABASE="dt"></my-cust> 

<script > 
    APP = angular.module("testAPP",['schedule']); 

    APP.controller("ctl",function($scope) 
        { 
        $scope.dt = {date:"02-03-2017",sDay:"Thu",sTime:"01:00"}; 
    }) // end of controller 

    APP.directive("myCust",function() 
    { 
     return{ 
       scope:{ 
        parameterDATABASE:'=' 
       }, 
       controller:"scheduleCtrl", 
       templateUrl:"templateForDirective.html" 
       } 
    }) 
</script> 

scheduleCtrl也有一个变量parameterDATABASE。

指令的contrller

var APP = angular.module('schedule',[]); 
APP.controller('scheduleCtrl',function($scope,$filter) 
{ $scope.parameterDATABASE=[]; // This is the variable I want to populate 

..............

+0

对你的问题有点困惑。如果我理解你的代码,就好像你的自定义控制器(在另一个文件中,显然上面没有图片)应该在该控制器中作为'$ scope.parameterDATABASE'提供。那是你在找什么?如果您也发布了该代码,并且可能会澄清预期的内容和实际发生的内容,这将会很有帮助。 –

+0

var APP = angular.module('schedule',[]); APP.controller('scheduleCtrl',function($ scope,$ filter) { $ scope.parameterDATABASE = []; //这是我想要填充的变量 – user3513192

+0

它们需要是同一个角度模块的一部分开始,你使用了3个模块:顶部有ng-app =“testAPP”,有一个控制器的是“MyRTO”,指令的控制器有“schedule”,这是行不通的。 –

回答

0

1)根据一些角命名约定的一部分,一个指令的属性名称应转换成camelCase

所以,在html DirectiveparameterDATABASE应该parameter-database

因此,该指令里面,你应该把它作为,

scope: { 
     parameterDatabase: '=' 
} 

所以,parameterDatabase映射到==>parameter-database

2)你也可以在两个地方直接使用parameterdatabase而不用大写。

例如:parameter-database="dt"html directive

scope: { 
      parameterdatabase: '=' 
    } 

<!DOCTYPE html> 
 
<html> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
 
<body ng-app="myApp" ng-controller="ctl"> 
 

 
<isolate-scope-with-controller parameter-database="dt" add="addCustomer()"></isolate-scope-with-controller> 
 

 
<script> 
 
var app = angular.module("myApp", []); 
 

 
app.controller("ctl",function($scope) 
 
        { 
 
        $scope.dt = {date:"02-03-2017",sDay:"Thu",sTime:"01:00"}; 
 
    }) // end of 
 
    
 
    app.directive('isolateScopeWithController', function() { 
 
     
 
    var controller = ['$scope', function ($scope) { 
 
\t \t console.log($scope.parameterDatabase) 
 

 
     }], 
 
     
 
     template = '<h1>I am from directive controller</h1><br><h2>{{parameterDatabase}}</h2>'; 
 
     
 
     return { 
 
      restrict: 'EA', //Default in 1.3+ 
 
      scope: { 
 
       parameterDatabase: '=' 
 
      }, 
 
      controller: controller, 
 
      template: template 
 
     }; 
 
    }); 
 

 

 
</script> 
 

 
</body> 
 
</html>

请执行上面的片段

Here is a working DEMO

+0

@ user3513192,请检查我的答案。 – Sravan

相关问题