JS档案:
"operatorType": "MergeCreateNode"
"operatorType": "CreateNode"
"operatorType": "MergeCreateRelationship"
HTML文件:
.controller('PageCtrl', [
'$http',
'$scope',
'$routeParams',
'$location',
function($http, $scope, $routeParams, $location){
switch($routeParams.page) {
case 'companies':
$scope.CurrentPageCtrl = 'CompaniesCtrl';
break;
default:
break;
}
}])
.directive('myPagecontent', function() {
return {
template: '<ng-controller ng-controller = "{{CurrentPageCtrl}}"></ng-controller>'
};
})
我得到错误:
<ng-controller ng-controller = "PageCtrl">
<my-pagecontent></my-pagecontent>
</ng-controller>
答案 0 :(得分:0)
这可能有点棘手,因为在这种情况下ng-controller
需要一个表达式来计算控制器构造函数,而不是一个包含控制器名称的字符串。
解决问题的一种方法是执行以下操作:
app.controller('PageCtrl', [
'$http',
'$scope',
'$location',
function($http, $scope, $location) {
$scope.CurrentPageCtrl = Controller1;
}
]);
function Controller1($scope) {
console.log('Controller1');
}
app.controller('Controller1', Controller1);
function Controller2($scope) {
console.log('Controller2');
}
app.controller('Controller2', Controller2);
app.directive('myPagecontent', function() {
return {
template: '<ng-controller ng-controller="CurrentPageCtrl"></ng-controller>'
};
});
演示: http://plnkr.co/edit/s3yy2fdF5OgBjPcKWikw?p=preview
另一种解决方案是创建一个在其他所有内容之前运行的指令,它使用控制器名称获取变量,添加具有正确值的ng-controller
,然后删除它们。