【问题标题】:AngularJs dynamic template display with same routeAngularJs动态模板显示与相同的路线
【发布时间】:2015-04-06 16:10:56
【问题描述】:

我是 Angular Js 的新手。最近我正在处理路由和模板Url。这是直截了当的。但现在我想做点什么,如果那是可能的话。

我想显示具有相同路由的不同视图或模板,但取决于我从服务器获取的数据的属性。如果状态为 A 则显示编辑模式,如果状态为 B 则显示只读模式。除状态外,数据值相同。我在模板中做 ng-if 并来回切换。可以通过这种方式完成,但出于可重用性的目的,我希望为每个模板设置一个单独的模板,并根据这些属性在路由中调用模板。

让我知道这是否可以做到。谢谢!

【问题讨论】:

    标签: javascript angularjs angular-ui-router


    【解决方案1】:

    a working example,接近这个问答:Trying to Dynamically set a templateUrl in controller based on constant

    如果我理解正确,方法可能是:

    • 使用$stateParams 切换读取 / 编辑
    • templateProvider选择模板
    • $templateRequest 从角度原生包装器中获利超过 $http + $tempalteCache

    状态定义很简单:

    $stateProvider
        .state('myState', {
            url: '/myState/:operation',
    
            templateProvider: ['$stateParams', '$templateRequest',
              function($stateParams, $templateRequest) {
    
                var templateName = 'read.html';
    
                if ($stateParams.operation === "edit") {
                     templateName = 'edit.html';
                } 
    
                return $templateRequest(templateName);
            }],
            controller: function ($state) {
            }
        });
    

    并链接到这个状态:

      <a href="#/myState/read">
      <a href="#/myState/edit">
    

    检查action here中的示例

    【讨论】:

    • 感谢您的时间和精力!我明白了。
    猜你喜欢
    • 1970-01-01
    • 2017-11-25
    • 2014-11-18
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 2016-12-19
    相关资源
    最近更新 更多