我是角色新手,坚持使用动态数据绑定。我有四个数据 字段2静态和2添加按钮后动态添加。当我点击添加 按钮只有两个字段显示在显示屏上并显示剩余数据 没有填充。我可能在数据传递方面犯了一些错误。 前两个字段是静态的,后两个是动态需要添加的 用户点击。使用表单时也是如此。 请问任何人请帮我解决这个问题。提前致谢。 以下是我的代码:
控制器:var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.items = [];
$scope.itemsToAdd = [{
firstName: '',
lastName: ''
}];
$scope.add = function(itemToAdd) {
var index = $scope.itemsToAdd.indexOf(itemToAdd);
$scope.itemsToAdd.splice(index, 1);
$scope.items.push(angular.copy(itemToAdd))
}
$scope.addNew = function() {
$scope.itemsToAdd.push({
firstName: '',
lastName: ''
})
}
});
查看(HTML):
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="plunker" ng-controller="MainCtrl">
<p>Hello {{name}}!</p>
<div ng-repeat="item in items">
{{item.regno}} {{item.section}}
{{item.firstName}} {{item.lastName}}
</div>
<input type="text" ng-model="itemToAdd.regno" />
<input type="text" ng-model="itemToAdd.section" />
<div ng-repeat="itemToAdd in itemsToAdd">
<input type="text" ng-model="itemToAdd.firstName" />
<input type="text" ng-model="itemToAdd.lastName" />
<button ng-click="add(itemToAdd)">Add</button>
</div>
<div>
<button ng-click="addNew()">Add new</button>
</div>
</body>
答案 0 :(得分:1)
你可以在添加后尝试:
$scope.$apply();
答案 1 :(得分:0)
本节:
<div ng-repeat="itemToAdd in itemsToAdd">
<input type="text" ng-model="itemToAdd.regno" />
<input type="text" ng-model="itemToAdd.section" />
<input type="text" ng-model="itemToAdd.firstName" />
<input type="text" ng-model="itemToAdd.lastName" />
<button ng-click="add(itemToAdd)">Add</button>
在ng-repeat之外,因此不知道itemToAdd是什么;告诉它:
$scope.itemsToAdd = [{
firstName: '',
lastName: '',
section: 'defaultSection',
regno: 'defaultRegNo'
}];
但是这只会给你空显示,因为你没有在任何地方定义regno和section的默认值。在代码中定义它们:
$scope.addNew = function() {
$scope.itemsToAdd.push({
firstName: '',
lastName: '',
section: 'defaultSection',
regno: 'defaultRegNo'
});
};
和
{{1}}
答案 2 :(得分:0)
来自directives-that-create-scopes
angular docs
某些指令(例如 ng-controller 和 ng-repeat )会创建新的子作用域并将子作用域附加到相应的DOM元素
在你的情况下,
itemToAdd.regno & itemToAdd.section are different modals and in different scope
与itemToAdd.firstName & itemToAdd.lastName
比较。
因此,regno & section
不是ng-repeat内部itemToAdd
的一部分。
这就是为什么,你无法进入$scope.items
您必须在regno & section
功能
add
$scope.add = function(itemToAdd) {
itemToAdd.regno = $scope.itemsToAdd.regno;
itemToAdd.section = $scope.itemsToAdd.section;
$scope.items.push(angular.copy(itemToAdd))
console.log($scope.items);
}