2016-09-26 12 views
0

と呼ばれる動的NG-モデルを設定する:は、私は、次の要素で構成ディレクティブを持って毎回ディレクティブは

毎回ボタンをクリックすると、新しいフォームは、フォームに追加されます。

問題:新しいフォームが追加されるたびに異なるngモデルが必要です。 は、ほぼ丸一日壁に頭を叩いた後、私はまだ無知だ

NB:私だけの時間

で1つのテンプレートを追加する必要があるとして、力学NG-モデルngのリピートを使用することはできませんここでのコードは次のとおりです。plunkrバージョン:テンプレート

app.directive("isbm", function(){ 
    return { 
    restrict: "E", 
    templateURL: "app/location of my template", 
    replace: false 
    } 
}) 

コントローラのhttps://plnkr.co/edit/4zjo8xRHD5gMm5kU77Tv?p=info

app.directive("addIsmb", function ($compile) { 
    return { 
     restrict: "A", 
     link: function (scope, element, attrs) { 
      element.bind("click", function() { 
       var toAppend = $compile("<i-smb></i-smb>")(scope) 
       $(".iSMBHolder").append(toAppend); 
       $(".countISMB").each(function(){ 
        var self = $(this); 
        var index = self.parent().index(); 
        scope.ctrl.iIndex = index+1; 
       }) 
       console.log(scope.ctrl.iIndex) 
      }) 
     } 
    } 
}) 

私のディレクティブ:私はしようforループ内にオブジェクトを返す配列を作成して、ng-modelとして返されるすべてのオブジェクトを使用できるようにしましたが、失敗しました。

app.controller("separated.inputs", ["C2CData", "channelData", function (C2CData, channelData) { 
    self.iList = new Array(10); 

    for (i = 0; i < self.iList.length; i++){ 
     self.iList[i] = {} 
    }; 

}]) 

私は

<div md-whiteframe="6" layout="column" class="iSMB animated fadeInUp countISMB ncInputSettings" get-idex> 
    <div layout="row" layout-align="space-between center" class="notToBeFolded"> 
     <div layout="row" layout-align="start center" id="ncInputTitle"> 
      <md-icon md-svg-src="icons/ncInputTitleSettings.svg" class="md-36"></md-icon> 
      <md-content>{{ctrl.iList[ctrl.iIndex.name]}}</md-content> 
     </div> 
     <md-button class="md-primary ncDeleteSMBS" delete-ismb>CANCEL</md-button> 
    </div> 
    <div class="toBeFolded"> 
     <div layout="row" class="ncInputRow"> 
      <div flex="40" class="ncBorderMe" layout-align="start center" layout="row" layout-padding> 
       <md-content class="md-heading">Name</md-content> 
      </div> 
      <div flex layout="row" layout-align="space-between center" layout-padding> 
       <input placeholder="Pick a Name" disabled class="ncInputListInput" ng-model="ctrl.iList[ctrl.iIndex.name]"/> 
       <md-button edit-field aria-label="Chose a name" class="ncMdButton"> 
        <md-icon class="material-icon ncIconNoMargin">edit</md-icon> 
       </md-button> 
      </div> 
     </div> 
    </div> 
</div> 

答えて

0

あなただけのほとんど角度のディレクティブのようng-model内のJavaScript式を使用することができますダイナミックNG-モデルを持っている必要がありますテンプレート。

$scope.scopeFunction = function(index) { 
    return $scope.models[index+1]; //Or something of that sort 
} 
+0

私が試したが、それはあなたのコードでは、より具体的に説明してください可能性が動作しません:あなたのコントローラ内の

<input placeholder="Pick a Name" disabled class="ncInputListInput" ng-model="scopeFunction($index)"/> 

そしてを:なぜあなたはこれを試してみませんか? –

関連する問題