2015-12-21 23 views
-1

我有10多個NG-click事件,但我想告訴我哪裏有隻更改點擊的元素值,但我在代碼更新,有那麼多的真或假的重複我必須寫,請幫助我必須顯示只點擊ng顯示值,而不使用每個點擊事件中的'true或false'booleen函數。只顯示來自多個NG-click事件點擊的元素值angularjs

var app = angular.module('myapp', ['ngSanitize']); 
 

 
app.controller('AddCtrl', function ($scope, $compile) { 
 

 
    $scope.field = {single: 'untitled',single2:'default',single3:'enter'}; 
 

 
    $scope.addName1 = function (index) { 
 
     var name1html = '<fieldset id="name1" ng-click="selectName1($index)"><label ng-bind-html="field.single"></label><input type="text" placeholder="Enter name"><button ng-click="removeName1($index)">-</button></fieldset>'; 
 
     var name1 = $compile(name1html)($scope); 
 
     angular.element(document.getElementById('drop')).append(name1); 
 
    }; 
 
    $scope.removeName1 = function (index) { 
 
     var myEl = angular.element(document.querySelector('#name1')); 
 
     myEl.remove(); 
 
    }; 
 
    $scope.selectName1 = function (index) { 
 
     $scope.showName1 = true; 
 
     $scope.showName2 = false; 
 
     $scope.showName3 = false; 
 
    }; 
 
    
 
    $scope.addName2 = function (index) { 
 
     var name2html = '<fieldset id="name2" ng-click="selectName2($index)"><label ng-bind-html="field.single2"></label><input type="text" placeholder="Enter name"><button ng-click="removeName2($index)">-</button></fieldset>'; 
 
     var name2 = $compile(name2html)($scope); 
 
     angular.element(document.getElementById('drop')).append(name2); 
 
    }; 
 
    $scope.removeName2 = function (index) { 
 
     var myEl = angular.element(document.querySelector('#name2')); 
 
     myEl.remove(); 
 
    }; 
 
    $scope.selectName2 = function (index) { 
 
     $scope.showName2 = true; 
 
     $scope.showName1 = false; 
 
     $scope.showName3 = false; 
 
    }; 
 
    
 
    $scope.addName3 = function (index) { 
 
     var name3html = '<fieldset id="name3" ng-click="selectName3($index)"><label ng-bind-html="field.single3"></label><input type="text" placeholder="Enter name"><button ng-click="removeName3($index)">-</button></fieldset>'; 
 
     var name3 = $compile(name3html)($scope); 
 
     angular.element(document.getElementById('drop')).append(name3); 
 
    }; 
 
    $scope.removeName3 = function (index) { 
 
     var myEl = angular.element(document.querySelector('#name3')); 
 
     myEl.remove(); 
 
    }; 
 
    $scope.selectName3 = function (index) { 
 
     $scope.showName3 = true; 
 
     $scope.showName1 = false; 
 
     $scope.showName2 = false; 
 

 
    }; 
 
});
<!DOCTYPE html> 
 
<html ng-app="myapp"> 
 

 
<head> 
 
\t <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0-beta.2/angular.min.js"></script> 
 
\t <script src="https://code.angularjs.org/1.5.0-rc.0/angular-sanitize.min.js"></script> 
 

 
\t </head> 
 

 
<body ng-controller="AddCtrl"> 
 
\t <div id="drop"></div> 
 

 
\t <button ng-click="addName1($index)">Name1</button> 
 
\t \t <button ng-click="addName2($index)">Name2</button> 
 
\t <button ng-click="addName3($index)">Name3</button> 
 
\t 
 
\t \t <form ng-show="showName1"> 
 
\t \t <div class="form-group"> 
 
\t \t \t <label>Field Label(?)</label> 
 
\t \t \t <br/> 
 
\t \t \t <input ng-model="field.single"> 
 
\t \t </div> 
 
\t </form> 
 
\t \t <form ng-show="showName2"> 
 
\t \t <div class="form-group"> 
 
\t \t \t <label>Field Label(?)</label> 
 
\t \t \t <br/> 
 
\t \t \t <input ng-model="field.single2"> 
 
\t \t </div> 
 
\t </form> 
 
\t \t \t <form ng-show="showName3"> 
 
\t \t <div class="form-group"> 
 
\t \t \t <label>Field Label(?)</label> 
 
\t \t \t <br/> 
 
\t \t \t <input ng-model="field.single3"> 
 
\t \t </div> 
 
\t </form> 
 

 
</body> 
 

 
</html>

這裏是plunkr http://plnkr.co/edit/oFytWlQMIaCaeakHNk71?p=preview

回答

0

需要有 「NG重複」 的HTML。在$ scope上設置一個數組,並讓模板確定要添加的HTML元素。通常,$ index只能由ng-repeat設置。

更多在這裏閱讀:https://docs.angularjs.org/api/ng/directive/ngRepeat

+0

謝謝安德魯,我試過,但我沒有得到正確的結果,u能請編輯plunkr代碼 –

相關問題