首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Res.render,可以创建一个控制器吗?

Res.render,可以创建一个控制器吗?
EN

Stack Overflow用户
提问于 2016-09-13 01:45:59
回答 1查看 260关注 0票数 0

我使用的是mean stack的结构:https://github.com/meanjs/mean

目前im使用res.render的方式如下:

代码语言:javascript
运行
复制
res.render('modules/core/server/views/index', {
  user: safeUserObject,
});

是否可以将其分配给angularjs控制器?

我不知道用我现在的结构该怎么做。

更新:

我设法让控制器工作,但我不能从中获取数据?我还需要头控制器作为根作用域。

代码:

代码语言:javascript
运行
复制
  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被执行了,但是我找不到任何值。

客户端:

代码语言:javascript
运行
复制
<div ng-controller="HeaderController">

<font style="color:white;">{{ vm.datatest }} {{ datatest }} {{ datatest }}</font>

</div>

一些调试:

EN

Stack Overflow用户

发布于 2016-09-13 04:32:43

如果要将其分配给vm,则应使用controllerAs语法。

代码语言:javascript
运行
复制
<div ng-controller="HeaderController as vm">
    <span>{{vm.data}}</span>
</div>

要在父控制器和子控制器之间共享数据,请使用服务/工厂或将数据分配给$rootScope。使用$rootScope的示例:

代码语言:javascript
运行
复制
//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;
}

在大多数情况下,首选方法是使用服务或工厂:

代码语言:javascript
运行
复制
//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:

代码语言:javascript
运行
复制
app.config(function ($routeProvider) {
    $routeProvider
    .when('/', {templateUrl: 'main' })
    .when('/:template, {
        templateUrl: function (urlattr) {
            return urlattr.template;
        }
    });
});

在express中定义路线:

代码语言:javascript
运行
复制
router.get('/', function (req, res ,next) {
    res.render('main')
})

router.get('/:template', function (req, res, next) {
    res.render(req.params.template)
})

这将在向根发出请求时呈现主模板。例如,当使用$location.path( 'index ')更改angular中的路由时,会向express中的'/: template‘路由发出请求,它将在视图文件夹中查找名为’index‘的模板,并将其呈现为部分模板,同时保留'main’模板的呈现。

希望这是有意义的。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39455894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档