【问题标题】:Set ng-model on directive from parent controller在父控制器的指令上设置 ng-model
【发布时间】:2014-12-31 07:16:58
【问题描述】:

我有 2 个相邻的相同指令 (<jd-autocomplete>),其中第 2 个的 ng-model 值应根据第 1 个的选定值设置。

<jd-autocomplete> 指令采用名为 ac-change(函数)的作用域属性,当该指令内部的 <input> 发生变化时,该属性会被调用。

看起来像这样:

<form>
    <jd-autocomplete ac-change="doChange" ng-model="entry.vendor"></jd-autocomplete>
    <jd-autocomplete ng-model="entry.category"></jd-autocomplete>
</form>

$scope.doChange = function(){} 作为父控制器上的方法存在,我将如何访问和设置该函数内的第二个指令的模型?

这是我的 plunkr:http://plnkr.co/edit/fTFM67wBcYtK6qdnjhNY?p=preview

【问题讨论】:

    标签: angularjs angularjs-directive


    【解决方案1】:

    分叉你plnkr

    在编辑第一个文本框时,您将在第二个文本框中具有相同的值。现在您可以在 doChange 处理程序中编写自定义登录。

    app.controller('AddFormController', [
        '$rootScope',
        '$scope',
        '$element',
        '$http',
    
        function ($rootScope, $scope, $element, $http){
            $scope.vendors      = [{'vendor_name':'hi', 'category_name': 'food'},{'vendor_name':'dude', 'category_name': 'food'}];
            $scope.categories   = [{'category_name': 'food'},{'category_name': 'gas'}];
    
    $scope.entry = {};
    
      $scope.wrapper = {};
            $scope.wrapper.doChange = function(obj){
                console.log(obj);
                $scope.entry.category = obj;
            };
    
        }
    ]);
    

    【讨论】:

    • 哦..哇!我所要做的就是使entry 成为父对象。比我希望的要容易得多
    • 是的,这是使用 angularjs 的方式。如果您要跨指令或跨控制器或跨指令和控制器共享某些内容,则通过对象而不是直接共享范围。它将降低复杂性,您将更好地控制您的代码。
    猜你喜欢
    • 2013-06-16
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    相关资源
    最近更新 更多