我有麻烦提交一个具有ng选项的对象到我的控制器。如果我提交表单,则Category
对象是未定义的。
ItemsController
// Create new Item
$scope.create = function() {
// Create new Item object
var item = new Items ({
name: this.name,
...
category: this.category,
});
创建项目视图
<section data-ng-controller="ItemsController">
<div class="page-header">
<h1>New Item</h1>
</div>
<div class="col-md-12">
<form class="form-horizontal" data-ng-submit="create()" novalidate>
<fieldset>
<div class="form-group">
<label class="control-label" for="name">Name</label>
<div class="controls">
<input type="text" data-ng-model="name" id="name" class="form-control" placeholder="Name" required>
</div>
</div>
...
</div>
<div class="form-group">
<label class="control-label" for="category">Category</label>
<div class="controls" data-ng-controller="CategoriesController" data-ng-init="find()">
<select data-ng-model="category" ng-options="cat.name for cat in categories"></select>
</div>
</div>
<div class="form-group">
<input type="submit" class="btn btn-default">
</div>
感谢"aurav gupta",我找到了解决方案http://fdietz.github.io/recipes-with-angular-js/controllers/sharing-code-between-controllers-using-services.html
问题在于您使用了两个不同的控制器
所以它们有不同的作用域
因此category对象是为 categorescontroller 而不是为ItemsController
定义的你可以把你的categorescontroller代码放在ItemsController中,这样就可以创建一个单独的控制器,或者你可以使用angular服务来绑定两个控制器的作用域变量。