AngularJS指令在隔离范围内的双向绑定不反映在父范围内

问题描述 投票:0回答:2

我试图将范围数组元素传递给指令并在指令中更改该元素的值,但是当我打印范围元素的值时,在指令范围内进行的更改在父范围中不受影响。我创建了隔离范围,并在范围内使用'='提供了两种方式的绑定,但未对父级范围进行任何更改。附加代码

Index.html

<div ng-app="dr" ng-controller="testCtrl">
    <test word="word" ng-repeat="word in chat.words"></test> 
    <button ng-click="find();">
    click
    </button>
</div>

Javascript部分

var app = angular.module('dr', []);
app.controller("testCtrl", function($scope) {
    $scope.chat= {words: [
      'first', 'second', 'third'
    ]};

    $scope.find = function(){
    alert(JSON.stringify($scope.chat, null, 4));
    }
});
app.directive('test', function() {
    return {
        restrict: 'EA',
        scope: {
            word: '='
        },
        template: "<input type='text' ng-model='word' />",
        replace: true,        
        link: function(scope, elm, attrs) {             
        }
    }
});

我的大部分搜索都返回将'='放在指令范围内将解决此问题,但是这样做并不走运。任何人都可以指出问题所在,以及如何在父范围中反映该值。

javascript angularjs angularjs-directive angularjs-scope angularjs-ng-repeat
2个回答
1
投票
您将一个字符串传递给指令,并且此字符串不再被引用,因为它不再与您的数组相关我想您必须正确更改数组

0
投票
可以通过使用单向(<)绑定来提高指令的效率:
© www.soinside.com 2019 - 2024. All rights reserved.