【问题标题】:Isolated result in AngularJSAngularJS 中的隔离结果
【发布时间】:2016-07-21 08:47:26
【问题描述】:

我想生成一系列调用函数的按钮,我想只返回调用者按钮 div。

现在我有:

  app.directive("phone", function () {
      return {
        scope: {
          dial: "&"
        },

       template: '<input type="text" ng-model="value"> <div class="button" ng-click="dial({message:value})">prova!   </div> {{ $parent.pippo }}',
        };
    });

<div ng-app="phoneApp">
  <div ng-controller="AppCtrl">
      <div phone dial="callHome(message)"> </div><br><br>

          $scope.callHome = function (message) {
            $scope.pippo = "casa";
          };

如何隔离对呼叫者按钮的响应?

【问题讨论】:

  • 您想将pippo 属性与父$scope 隔离?
  • 嗨 Apperiron,我不知道如何解决我的问题:D 我想实现这种情况:BUTTON1 RESULT1 BUTTON2 RESULT2 ecc .. 当我点击按钮 1 时,它调用一个函数并只返回其结果到调用者 div...

标签: javascript angularjs angularjs-scope isolate-scope


【解决方案1】:

为您的指令分配controllercontrollerAs,这样您就可以使用单独的contex 为每个按钮创建新指令:

app.directive("phone", function () {
  function PhoneDirectiveCtrl ($scope) {
    this.$scope = $scope;
  }
  
  PhoneDirectiveCtrl.prototype.dial = function () {
    this.pippo = this.message + 'casa';
  }
  
  var tempalte = '<input type="text" ng-model="value"> <div class="button" ng-click="ctrl.dial()">prova!</div> {{ ctrl.pippo }}';
  
  return {
    controller: PhoneDirectiveCtrl,
    controllerAs: 'ctrl',
    scope: {
      message: '@'
    },
    template: template
  }
});

当您必须创建几个相同directive 的实例时,不要使用父级的$scope

附:不要仅在$parent 控制器中定义与指令相关的方法。您应该使用您的directive 调用的专用方法创建专用controller

【讨论】:

  • 非常感谢您对我的帮助!代码 sn-p 不运行,因为 app 未定义。你可以修改代码sn-p吗?能给我一个html例子吗?我是 angularJs 的新手。最后...如何给您的回复打几星?
  • 你能创建一个简单的例子吗?如果在 html 页面中我想要 3 个按钮,当按下时返回此函数 scope.b = function(){ return 4; };我该如何解决?
猜你喜欢
  • 2015-09-09
  • 2015-01-14
  • 2018-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多