指令中的Ng模型不会改变控制器中的父范围

时间:2014-10-30 10:19:38

标签: angularjs angularjs-directive angularjs-scope

我有一个带指令和心室范围变量的html模板(mySelections_class_list):

<pre>{{mySelections_class_list|json}}</pre>
<ng-data-grid cells="columnDefsClassList" rows="class_list" my-selections="mySelections_class_list" lang="lang"></ng-data-grid>

我有一个指令,这是指令代码:

    directives.directive('ngDataGrid', ['$rootScope','$location', '$hotkey','$timeout', function($rootScope, $location, $hotkey,$timeout){
            return {
                transclude: true,
                restrict: "EAC",
                templateUrl: 'templates/panels/ng-data-grid.html',
                scope: {
                    cells: "=",
                    rows: "=",
                    item: "=",
                    mySelections: "=",
                    lang: '='
                },
                controller: ['$scope','$element', function($scope,$element){
                    $scope.mySelections = 'blabla';
                }]
            }
        }]);

和指令模板,我有ng-model:

     <table kb-list ng-model="mySelections" class="data-grid">
....
        </table>

但是当我在指令mySelections_class_list中更改时,在我的父控制器中它没有改变!但在模板中我看到了变化!

所以...在模板工作中...但在父控制器中:console.debug($ scope.mySelections_class_list)没有任何变化!为什么!?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

尝试将父作用域的变量放在某个对象中:

$scope.model = {};
$scope.model.columnDefsClassList = <someValue>;
$scope.model.class_list = <someValue>;
$scope.model.mySelections_class_list = <someValue>;
$scope.model.lang = <someValue>;

<ng-data-grid cells="model.columnDefsClassList" rows="model.class_list" my-selections="model.mySelections_class_list" lang="model.lang"></ng-data-grid>

参见解释here

答案 1 :(得分:0)

我一直在摆弄一下,我不确定你的特定问题来自于一个剥离的jsfiddle和angular 1.3-rc5

<div ng-controller="MyCtrl"></div>

并将MyCtrl定义为空函数,它按预期工作: http://jsfiddle.net/HB7LU/7769/

此外,您应该使用自己的命名空间,为angular指令保留ng。

希望有所帮助:)