我已经创建了一个我称为<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
的控制器。
答案 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