我正在开发一个添加/编辑/删除联系人的应用程序.
以下是我添加联系人视图模板的方式:
以下是我添加联系人视图模板的方式:
- <input placeholder="name" ng-model="contact.name" type="text">
- <input placeholder="number" ng-model="contact.number" type="text">
- <a href="#/"><button>Add</button></a>
- var myApp = angular.module('myApp',['ngRoute']).config(function ($routeProvider) {
- $routeProvider.when('/contact/:index',{
- templateUrl: 'partials/edit.html',controller: 'Edit'
- }).when('/',{
- templateUrl: 'partials/contacts.html'
- }).when('/add',{
- templateUrl: 'partials/add.html',controller: 'Add'
- })
- .otherwise({ redirectTo: '/' });
- }).controller('Contacts',['$scope',function($scope){
- $scope.contacts = [
- {name:'Hazem',number:'01091703638'},{name:'Taha',number:'01095036355'},{name:'Adora',number:'01009852281'},{name:'Esmail',number:'0109846328'}
- ];
- }]).controller('Edit','$routeParams',function($scope,$routeParams){
- $scope.contact = $scope.contacts[$routeParams.index];
- $scope.index = $routeParams.index;
- }]).controller('Add',function($scope){
- $scope.contacts.push({name: contact.name,number: contact.number});
- }]);
我在chrome检查员中遇到错误说:
ReferenceError:未定义contactname
- controller('Add',function(){
- this.contacts.push({name: contactname,number: contactnumber});
- }]);
每个控制器都有自己的范围,在Add控制器中,您只是尝试将未定义的内容推送到也未定义$scope.contacts的变量中.
另外在您的视图中,当您将某些内容传递给ng-model时,这基本上是在控制器中具有该名称的变量之间创建双向数据绑定.所以在这种情况下,你的html将创建两个变量:$scope.contactname和$scope.contactnumber.
在您的视图中,您还调用了一个函数Add(),该函数尚未在您的控制器上定义.
以下是您的控制器应该是什么样子:
- controller('Add',function(){
- var vm = this;
- vm.contacts = []; //you declare your array of contacts in the controllers scope
- //vm.contacts = getContactsFromDB(); //typically you'd be getting your initial list from a DB
- //As good practice,you should initialize the objects in your scope:
- vm.contactname = '';
- vm.contactnumber = '';
- vm.Add = function() {
- vm.contacts.push({name: vm.contactname,number: vm.contactnumber});
- //Also you could add the data to a database
- /*
- ContactService
- .AddNewContact(vm.contactname,vm.contactnumber)
- .then(function(){
- vm.contacts.push(
- {name: vm.contactname,number: vm.contactnumber});
- });
- */
- //Finally you should reset the form variables
- vm.contactname = '';
- vm.contactnumber = '';
- }
- }]);