javascript - Angular 具有相同 Controller 共享范围的两个不同指令

标签 javascript angularjs angularjs-directive angularjs-scope angularjs-controller

我正在创建两个使用相同 Controller 的指令,因此我看到这两个指令在 Controller 之间共享数据。我想要的是数据每个指令都是唯一的,因此不应共享数据。

var app = angular.module("app",[]);

app.controller('myCtrl', function($scope){
  $scope.data = {
    name: 'Javier'
  };
});


app.directive('dir1', function(){
  return {
    template: "<div style='background:red'><input type='text' ng-model='data.name'>{{data.name}}</div>",
    controller: "myCtrl"
  };
});


app.directive('dir2', function(){
  return {
    template: "<div style='background:yellow'><input type='text' ng-model='data.name'>{{data.name}}</div>",
    controller: "myCtrl"
  };
});

https://jsbin.com/vetikuvada/1/edit?html,js,output

因此,在我的示例中,我想要的是当我编辑其中一个文本框中的文本时,它不会触发另一个文本框中的更改。我知道 Controller 是用不同的实例部署的,但不知何故它们共享范围,我需要这是完全不同的。这可能吗?

该示例是一个非常复杂的应用程序的一小部分,因此我必须能够使用这种方法而不是其他方法来完成它。

最佳答案

app.directive('dir1', function(){
  return {
    /* defines an isolated scope where state is
       not shared between other scopes */
    scope: {}, 

    template: "<div style='background:red'><input type='text' ng-model='data.name'>{{data.name}}</div>",
    controller: "myCtrl"
  };
});

评论this post有关定义如何初始化指令范围的更多信息。

关于javascript - Angular 具有相同 Controller 共享范围的两个不同指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32891429/

相关文章:

Javascript 事件监听器刷新

javascript - 根据选项类别而不是值显示不同的内容

javascript - Angular JS : $location injection undefined

javascript - AngularJS - 函数永远无法获得控制

javascript - Angular Slick slickGoTo 不起作用

javascript - 将整个数组的内容推送到多维数组的一个索引中

javascript - 如何使用 fitBounds() 覆盖 Google map 初始化的选项;

javascript - 使用 AngularJS 添加到 json 对象

css - 如何将图像信息发送到 Popup - Ionic

angularjs - 带有自定义指令的 Angular ng-repeat