在stateprovider中填充嵌套视图

时间:2016-12-19 13:55:59

标签: angularjs angular-ui-router

Here is a plunker I am working on。我是stateProvider的新手,我正在尝试嵌套视图。通过这样做,我几乎搞砸了视图中的视图:

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_contacto`(

    IN nom      VARCHAR(100),
    IN ape      VARCHAR(100),
    IN mail     VARCHAR(100),
    IN tel      VARCHAR(100),
    IN dirigido VARCHAR(100),
    IN maj      TEXT,
    IN id_form  INT,
    IN p_fecha  DATE

) BEGIN

    DECLARE p_idvisitante int DEFAULT 0;
    DECLARE existe int DEFAULT 0;

    select count_visit(nom, mail) into existe;

    IF existe = 0 THEN    
        CALL insert_visitante(nom, ape, mail, tel);
        select id_visit(nom, mail) into p_idvisitante;
        CALL insert_visit_form_selec(p_idvisitante, id_form, 6, p_fecha, dirigido);     
        CALL insert_visit_form_selec(p_idvisitante, id_form, 7, p_fecha, msj);
        CALL insert_form_visit(p_idvisitante, id_form);
    ELSE
        select id_visit(nom, mail) into p_idvisitante;
        CALL insert_visit_form_selec(p_idvisitante, id_form, 6, p_fecha, dirigido);
        CALL insert_visit_form_selec(p_idvisitante, id_form, 7, p_fecha, msj);
        CALL insert_form_visit(p_idvisitante, id_form);
    END IF;

END

你能帮我渲染一下.state('canvas',{ name: 'canvas', url: '/', views:{ '': {templateUrl:'welcome-page.html'}, 'carousel1@canvas': { templateUrl: 'carousel-detail.html', views:{ 'carouselDetail@carousel1' : {template: '<h2>Carousel-1 child view</h2>'} } }, 'carousel2@canvas': {template: '<h2>Carousel2</h2>'}, }, })

1 个答案:

答案 0 :(得分:0)

严格地说,你不能。

首先,您无法将视图嵌套在视图中 - 这意味着视图中没有子视图,没有声明子视图状态。因此,您的carousel1carousel2可能是兄弟视图,但您不能将carousel1-child视为其子视图&#39; carousel1未将其声明为子状态。如果需要嵌套视图,则必须声明子状态,并使用<div ui-view></div>填充子视图。您可以阅读文档here

其次,假设您要声明一个子状态,那么您将再次遇到问题 - 您将失去carousel1carousel2的并行性(有这样一个词吗?)。为什么?因为你不能同时拥有两个同时处于活动状态 - 而且这实际上是对状态机的严格定义,而这正是ui-router正在做的事情。但是,如果您确实想要并行状态,请使用christopherthielen的ui-router-extra。 ui-router的这种扩展允许您一次激活多个状态,并且可能是您想要的用例。

我为你创建了一个plnkr

额外:当您发布plnkr时,检查它是否真的可以重现您想要提出的问题 - 有多个404错误只是因为您复制粘贴文件路径。