34

ディレクティブで親コントローラーからスコープを継承する必要があります。必ずしもスコープを離れたくない: false。また、必要な値を適切にリンクするには多くの作業が必要になるため、必ずしも分離スコープを使用する必要はありません (親コントローラーの多くの値を考えてください)。

scope:true親スコープを更新したい場合、ディレクティブで使用するのは理にかなっていますか?

<div ng-controller="MyCtrl">
      Hello, {{name}}!
        <my-directive></my-directive>
</div>
var myApp = angular.module('myApp',[]);

//myApp.directive('myDirective', function() {});
//myApp.factory('myService', function() {});

function MyCtrl($scope) {
    $scope.name = 'Dave';
}


myApp.directive('myDirective', function() {
    return {
        scope: true,
        restrict: 'EA',
        link: function(scope, elem, attrs) {
            scope.updateName = function(newName) {
                console.log('newName is: ' + newName);
                scope.name = newName;
            }
        },
        template: '<input ng-model="updatedName" placeholder="new name value"> <button ng-click="updateName(updatedName)">Update</button>'
    }
})

フィドルをチェックしてください

4

3 に答える 3

15

スコープの継承は、子の値の設定がその親の値の設定であることを意味しません。

子スコープで行う代わりにscope.name = newName、メソッドを親スコープに追加します。これは、同じジョブを親スコープで実行し、子がこのメソッドを継承するため、子スコープから呼び出します。

于 2013-05-30T21:20:21.153 に答える