我正在使用这种平均堆栈结构:https://github.com/meanjs/mean
目前我正在使用res.render
,如下所示:
res.render('modules/core/server/views/index', {
user: safeUserObject,
});
可以将它分配给angularjs控制器吗?
我不知道如何用我目前的结构来做。
更新
我设法让控制器工作,但我无法从中获取数据? 我还需要将headcontroller作为根范围。
代码:
function HeaderController($scope, $state, Authentication, menuService) {
var vm = this;
vm.accountMenu = menuService.getMenu('account').items[0];
vm.authentication = Authentication;
vm.datatest = 200000;
$scope.datatest = 200001;
console.log("loaded , maybe possible4?");
}
执行console.log,但我找不到任何值。
客户:
<div ng-controller="HeaderController">
<font style="color:white;">{{ vm.datatest }} {{ datatest }} {{ datatest }}</font>
</div>
一些调试:
答案 0 :(得分:0)
如果要将此分配给vm,则应使用controllerAs语法。
<div ng-controller="HeaderController as vm">
<span>{{vm.data}}</span>
</div>
要在父控制器和子控制器之间共享数据,请使用服务/工厂或将数据分配给$ rootScope。使用$ rootScope的示例:
//parent controller
function HeaderController ($rootScope) {
var vm = this;
$rootScope.data = 'This is a string';
//inject $rootScope into child controllers to get or set $rootScope.data
}
//child controller
function ChildController ($rootScope) {
var vm = this;
vm.data = $rootScope.data;
}
在大多数情况下,首选方法是使用服务或工厂:
//parent controller
function HeaderController (factory) {
var vm = this;
vm.data = 'This is a string';
factory.set(vm.data);
//set data in factory from parent controller
}
//child controller
function ChildController (factory) {
var vm = this;
vm.data = factory.get();
//get data from factory set in child controller
}
//basic example factory
function factory () {
var data;
var factory = {
get: get,
set: set
}
return factory;
function get () { return data; }
function set (item) { data = item; }
}
在配置块中渲染主模板和部分使用$ routeProvider:
app.config(function ($routeProvider) {
$routeProvider
.when('/', {templateUrl: 'main' })
.when('/:template, {
templateUrl: function (urlattr) {
return urlattr.template;
}
});
});
在express中定义路线:
router.get('/', function (req, res ,next) {
res.render('main')
})
router.get('/:template', function (req, res, next) {
res.render(req.params.template)
})
这将在向根发出请求时呈现主模板。例如,当使用$ location.path('index')更改角度的路径时,会向express中的'/:template'路径发出请求,它将在您的views文件夹中查找名为'index的模板并呈现为部分,同时保留'main'模板。
希望这是有道理的。