0

テンプレート要素とAngularを試しています。

<template id="loginTemplate">
<div id="login" class="menuTop menu top" data-ng-controller="loginCtrl">
    <form class="form-inline text-center" id="loginForm" data-ng-submit="login()">
      <input type="email" class="input-big" placeholder="Email" data-ng-model="loginEmail">
      <input type="password" class="input-mini" placeholder="Password" data-ng-model="loginPass">
      <input type="text" class="input-small" placeholder="Display name" data-ng-model="loginName" data-ng-show="register">
      <button type="submit" class="btn-small">Sign in</button>
      <button type="button" class="btn-small" data-ng-hide="register" data-ng-click="register=true">Register</button>
    </form>
</div>
</template>

JS:

(function init(){
"use strict";
var loginTemplate = document.querySelector("#loginTemplate").content;
document.body.appendChild(loginTemplate.cloneNode(true));
return;
})();

これは、init で Angular コントローラー データをレンダリングする際にうまく機能します。ただし、次のテンプレートを条件付きでロードしたい場合は機能しません。

<template id="menuTemplate">
<div id="menu" class="menuTop menu top" data-ng-controller="menuCtrl">
{{ time.now }}
</div>
</template>

JS:

socket.on("logon", function ( data ){
//this fails 
        $scope.user.name = data.userName;
        var menuTemplate = document.querySelector("#menuTemplate").content;
        document.body.removeChild(document.getElementById("login"));
        document.body.appendChild(menuTemplate.cloneNode(true));
}

これにより、{{変数}}が表示されます。この menuTemplate を最初にロードすると機能しますが、条件付きでロードすると機能しません。Angular は 2.0 でサポートが利用可能になると述べているため、テンプレート要素をサポートしていない可能性がありますが、初期ロードが機能するため、誰かが他の場所で機能している可能性がありますか? ロード後に実行すると、.clonenode が角度リンクを壊すのではないでしょうか? 知らない。

編集:フィドルがありますが、クロムカナリアのように機能させることができませんでした. http://jsfiddle.net/CSK8n/

4

0 に答える 0