2014-10-17 68 views
0

我希望能夠選擇一個特定的對象,並在它的角輸入文本「動態」。如何動態地在「角」對象中插入文本?

應用程序文件:

var myApp = angular.module("myApp", []); 

myApp.controller("myCtrl", ["$scope", function($scope){ 

$scope.persons = [ 
{ 
    name: "Kevin", 
    lastName: "Cris", 
    mottos : [ 
     { 
      motto: "Holy Moly!" 
     } 
    ], 
}, 
{ 
    name: "Tres", 
    lastName: "Yepo", 
    mottos : [ 
     { 
      motto: "Crispy!" 
     } 
    ], 
}, 
{ 
    name: "Prosi", 
    lastName: "Nani", 
    mottos : [ 
     { 
      motto: "I love this!" 
     } 
    ], 
} 
]; 

}]); 

我可以在陣列[1]在對象中插入文本:

$scope.addMotto = function(){ 
    $scope.persons[1].mottos.push({ 
     motto: $scope.enterMotto 
    }); 
}; 

但是,我怎麼可能能夠座右銘添加到人對象每次?

更明確:我所試圖做的是:選擇一個人並添加座右銘。 我想不通的是:如何創建一個人對象的選擇和選擇的對象上添加文字。

HTML文件:

<div ng-controller="myCtrl"> 

<section ng-repeat="person in persons"> 

    <p class="header">Persons --</p> 

    <p>Name: {{person.name}}</p> 
    <p>lastName: {{person.lastName}}</p> 
    <p ng-repeat="shoutOut in person.mottos" class="motto">Motto: {{shoutOut.motto}} </p> 

</section> 
<p ng-repet="newMotto in persons.mottos">Your Motto: {{newMotto.motto}} </p> 

<p>Enter Motto:<input type="text" ng-model="enterMotto" /></p> 


<button ng-click="addMotto()">Submit </button> 

</div><!--myCtrl--> 

直播:http://jsfiddle.net/9eau9dq2/

+0

你想motto'加上'到每個人的對象? – Yasser 2014-10-17 06:42:10

+0

我只想添加座右銘給選定的人..所以:選擇一個人,並添加座右銘..(不是每個人的座右銘..)謝謝! – Mar 2014-10-17 06:46:16

+0

我看不到任何代碼,在添加座右銘之前選擇一個人 – Yasser 2014-10-17 06:47:32

回答

2

如果要添加到每個人的對象,這裏是你應該做的 - http://jsfiddle.net/k8o8x60w/

$scope.addMotto = function(){ 
    angular.forEach($scope.persons, function(item, i){ 
     item.mottos.push({motto: $scope.enterMotto}); 
    }); 
}; 

如果您想要添加到選定的人員對象,您需要隨身攜帶選定的身份證號碼,並在每次選擇其他人時更新身份證號碼並更新其身份相應地。

你可以提供一個選擇框,這樣允許用戶選擇一個人,你想添加一個座右銘

<select> 
    <option ng-repeat="person in persons" value="{{person.name}}">{{ person.name }} {{ person.lastName }}</option> 
</select> 

和更新的方法來...

$scope.addMotto = function() { 
    angular.forEach($scope.persons, function (item, i) { 
     if (item.name == $scope.selectedperson) { 
      item.mottos.push({ 
       motto: $scope.enterMotto 
      }); 
     } 
    }); 
}; 

更新小提琴:http://jsfiddle.net/k8o8x60w/1/

注意:強烈建議你在person對象中也使用一些id。

1

我更新了搗鼓一些工作代碼! http://jsfiddle.net/9eau9dq2/1/

You could also use a select box for sure, but that is really similar anyways ;-) 

希望幫助! 揚

+0

那的確工作得很好!:)不過阿拉法特的答案是什麼,我要拍,我猜。 – Mar 2014-10-17 07:05:45

+0

太棒了!祝你好運! – jfornoff 2014-10-17 07:14:29