从angular指令获取数据

时间:2017-08-09 08:25:50

标签: angularjs angularjs-directive

我已经创建了一个我称为<form id="uInputs"> Enter a value in the first field, then press Submit:<br> <input type="number" id="fWD" value="" min="0" max ="6"> Weekday (0 to 6 for Sun to Sat)<br> <input type="number" name="fHr" value="" min="0" max ="23"> Hour (0 to 23)<br> <input type="number" name="fMins" value="" min="0" max ="59"> Minutes (0 to 59)<br> <input type="number" name="fSecs" value="" min="0" max ="59"> Seconds (0 to 59)<br> <input type="number" name="fWOffset" value="-6" min="-12" max ="12"> wOffsetHours (-12 to 12)<br> <input type="button" value="Submit" onclick="showValues()"> </form>的指令,并且我从视图my-tree调用此指令,如下所示:

exemple-tree-view.html

此视图的控制器名为<my-tree ng-model="sampleTreeView.listNoeuds" ... />

在我的指令链接函数中,我有一个函数返回一些数据,这些数据影响到指令控制器中声明的范围变量,如下所示:

sampleTreeView

我的问题是如何在function linkFn(scope, element, attrs) { //some code scope.createNode = function ($event) { var sel = $(element).jstree(true).create_node($($event.currentTarget)[0].closest('.jstree-node').id); if (sel) { $(element).jstree(true).edit(sel, '', function (node, success, cancelled) { scope.treeActionsResult.createdNode = node; }); } }; //some code } 控制器中获取scope.treeActionsResult.createdNode值,因为它是我调用指令的sampleTreeView的控制器。

2 个答案:

答案 0 :(得分:0)

您可以通过删除范围属性

来使用指令和控制器之间的共享范围

就像在这个例子中一样:

MyApp.directive('studentDirective', function () {
return {
    template: "{{student.name}} is {{student.age}} years old !!",
        replace: true,
        restrict: 'E',
        controller: function ($scope) {
            console.log($scope);
        }
    }
});

仍然有$ scope对象,但在这种情况下,scope对象与父控制器的作用域共享。

您可以通过以下链接了解有关它的更多信息 Understanding Scope in AngularJs Custom Directive

答案 1 :(得分:0)

如果没有为指令创建隔离范围,则可以从控制器访问指令范围值。像贝娄一样

您的控制器和指令:

app.controller('MainCtrl', function($scope) {
  $scope.value = 1;
});

app.directive('myTree', function() {
  return {
    restrict: 'AE',
    link: function(scope, element, attrs) {
      scope.values = {};
      scope.values.price = 1234;
    }
  };
});

然后在你的html中使用:

<body ng-controller="MainCtrl">
    <p>value {{values.price}}</p>
    <my-tree att="{{attValue}}"></my-tree>
  </body>

values.price

中指令显示的MainCtrl