2015-08-14 109 views
1

我有三個按鈕,動態生成三種略有不同的表單。我無法創建雙向數據綁定。對於每個表單,綁定變得相同(例如,如果我添加表單A,B和C,並在表單A上的註釋字段中輸入註釋,該註釋也會出現在表單B和C上)。我想要做的是每個表單都有自己的值,所以如果我在表單A中輸入評論,則此評論只會出現在表單A的實例中。如果我添加另一個表單A並在其中輸入不同的評論它不應該出現在其他地方,但形式A的第二個實例動態生成表單上的角度雙向數據綁定

我創建這個plunker我的例子/問題 http://plnkr.co/edit/6S4fdJ6OQuOqJPFmH9yx?p=preview

控制器:

angular.module('myApp') 
.controller('MainCtrl', ['$scope', 'MainFactory', function ($scope, MainFactory) { 
    var ctrl = this; 
    var frmCnt = 0; 
    var dayCnt = 1; 

    $scope.iti = MainFactory; 

    var forms = [ 
     "frm1.html", 
     "frm2.html", 
     "frm3.html" 
    ]; 

    ctrl.displayedForms = []; 

    ctrl.addForm = function(formIndex) { 
     ctrl.displayedForms.push(forms[formIndex]); 
     console.log(ctrl.displayedForms.length); 
    } 

    ctrl.deleteNode = function(indx) { 
     ctrl.displayedForms.splice(forms[indx], 1); 
    } 

    ctrl.isCollapsed = false; 
    }]); 

廠:

angular.module('myApp') 
    .factory('MainFactory', function(){ 
    return []; 
    }); 

應用

angular.module('myApp', ['ui.bootstrap', 'ngRoute']) 

感謝您的幫助和/或建議。

+0

'$範圍$ watch'是你的朋友。 –

回答

1

您將所有表單綁定到同一對象的屬性iti。每個form應該綁定到它自己的View Model對象。目前還不清楚爲什麼這個對象綁定到myFactory(它本身就是混淆了它的定義)。

因此,創建一個表單的新對象(我會從myFactory遠離這個例子的目的):

.controller("MainCtrl", function($scope){ 
    $scope.formsVm = []; 

    $scope.addForm = function(formIndex){ 
    $scope.formsVm.push(
     { 
     formVm: {}, // this will be your per-form ViewModel 
     url: forms[formIndex] 
     } 
    ); 
    }; 

    // etc... 
}); 
<div ng-repeat="form in formsVm" ng-init="iti = form.formVm"> 
    <ng-include src="form.url"></ng-include> 
</div> 

Demo