使用ng-option

时间:2015-09-15 13:10:14

标签: javascript drop-down-menu controller mean-stack

我无法将ng-option的对象提交给我的控制器。如果我提交表单,则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>

感谢&#34; aurav gupta&#34;我找到了解决方案http://fdietz.github.io/recipes-with-angular-js/controllers/sharing-code-between-controllers-using-services.html

1 个答案:

答案 0 :(得分:1)

问题是因为您正在使用两个不同的控制器
所以他们会有不同的范围。
因此类别对象是为 CategoriesController 定义的,而不是为 ItemsController 而定义的 您可以通过将ItemsController的代码放在ItemsController中来制作单个控制器来解决这个问题,也可以使用角度服务来绑定两个控制器的范围变量。