【问题标题】:Update directive variable from controller从控制器更新指令变量
【发布时间】:2014-08-05 17:03:07
【问题描述】:

AngularJS 新手我有一个简单的指令、服务和控制器。我遍历指令中嵌入的控制器中的数据库中的项目列表,以呈现项目的复选框列表。从表格中,我可以更新数据库中的项目列表。同时我想用新添加的项目更新我的显示项目列表,并希望从 Angulars 双向绑定中受益,但我不知道如何......

我的指令:

angular.module('myModule').directive('menu', function (menuService) {
return {
    restrict: 'E',
    templateUrl: '../templates/menu.html',
    controller: function () {
        var me = this;
        menuService.getMenuItems().then(function(data) {
            me.items = data;
        });
    },
    controllerAs: 'menu'
};
});

及对应的html:

<div ng-repeat="item in menu.items">
            <div class="col-md-4" ng-if="item.menuItem">
                <div class="checkbox">
                    <label for="{{item._id}}">
                        <input id="{{item._id}}" type="checkbox" name="menuItems" ng-model="menuItems[$index]" ng-true-value="{{item._id}}">
                        {{item.menuItem}}
                    </label>
                </div>
            </div>
        </div>

我现在的问题是,如果我使用此控制器添加新项目

编辑:在我的页面上,我有两件事。 1:使用上述指令呈现的项目列表和 2:具有单个输入字段的简单表单。我输入一个新的 menuItem 并单击“保存”。这会触发下面的控制器被新的 menuItem 调用。然后将 menuItem 添加到我的数据库中的集合中,但我希望我的页面上的列表使用新添加的项目进行更新。最好不必重新加载整个页面。

    $scope.insertMenuItem = function () {
    $http.post('/menuItems', $scope.formData)
        .success(function (data) {
            $scope.items = data;
        });
};

然后我的指令中的“me.items”保持不变,因此我的浏览器中的列表也是如此。

我如何“将所有内容捆绑在一起”,以便在我调用 insertMenuItem 时 my.items 会自动更新?

这并没有我希望的那么好,但我希望你明白这个意思......

提前致谢

【问题讨论】:

  • 如果您使用的是controller as,那么您需要更新this.items = data 而不是$scope.items
  • 很抱歉,将我的控制器从 $scope.items 更改为 this.items 并没有帮助。我仍然需要重新加载我的页面才能看到新插入的项目...
  • add a new item using this controller 你能解释一下吗...
  • 如果insertMenuItem()在父控制器中(不是menu指令的控制器),您必须寻找一种通信方式,例如将items移动到$scope到获得范围继承或使用双向范围绑定的好处。
  • 更新问题。现在清楚一点了吗?

标签: angularjs angularjs-directive angularjs-controller


【解决方案1】:

看看这个http://jsbin.com/rozexebi/1/edit,它展示了如何将指令中的项目列表绑定到控制器,希望对您有所帮助。

【讨论】:

  • 谢谢!这正是我想要的:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-30
  • 1970-01-01
  • 2016-09-04
  • 2023-03-06
  • 1970-01-01
相关资源
最近更新 更多