Javascript 如何使用scope';指令中的变量是什么?
我想在指令中获取一个作用域变量作为javascript变量。 这是我的密码:Javascript 如何使用scope';指令中的变量是什么?,javascript,angularjs,scope,angularjs-directive,Javascript,Angularjs,Scope,Angularjs Directive,我想在指令中获取一个作用域变量作为javascript变量。 这是我的密码: app.controller("Home", ["$scope", function($scope) { ... $scope.nb_msg = data.length; ... }]); app.directive("myDiv", function() { // Here, i want to get $scope.nb_msg var nb_msg = ???;
app.controller("Home", ["$scope", function($scope) {
...
$scope.nb_msg = data.length;
...
}]);
app.directive("myDiv", function() {
// Here, i want to get $scope.nb_msg
var nb_msg = ???;
var result = [];
// do something with nb_msg to get result
var template = "";
...
for(var i=0; i<10; i++) {
template += "<span>" + result[i] + "</span>";
}
...
return {
restrict: "E",
template: template
};
});
app.controller(“主页”、[“$scope”、函数($scope){
...
$scope.nb_msg=data.length;
...
}]);
应用程序指令(“myDiv”,函数(){
//在这里,我想得到$scope.nb_msg
变量nb_msg=???;
var结果=[];
//用nb_msg做一些事情以获得结果
var模板=”;
...
对于(var i=0;i如果您的指令没有创建隔离作用域,则变量将在指令控制器、编译和链接函数中可用
如果您的指令确实创建了一个隔离的作用域,那么您不能,而不是像这样,指令不知道outide控制器,因此它们无法访问控制器变量,您确实有其他选择
第一个--如果要提供双向绑定,请将控制器变量用作指令的属性值,并在范围中使用“=”链接它
第二——将要共享的变量放入服务中,并将其注入控制器和指令中
第三--(不太推荐)使用作用域。$parent要访问控制器作用域,此方法始终假定您的指令将始终包含在该控制器内
注意。在任何情况下,您都可以在指令定义功能中使用变量您可以访问链接功能中的范围:
app.directive("myDiv", function() {
return {
restrict: "E",
template: '<span ng-repeat="i in result">{{i}}</span>',
link: function(scope, element, attr) {
// Here, i want to get $scope.nb_msg
var nb_msg = scope.nb_msg;
scope.result = [];
for(var i=0; i<10; i++) {
scope.result.push(i);
}
}
};
});
app.directive(“myDiv”,function(){
返回{
限制:“E”,
模板:{{i}},
链接:功能(范围、元素、属性){
//在这里,我想得到$scope.nb_msg
var nb_msg=scope.nb_msg;
scope.result=[];
对于(var i=0;iThanks,但是模板变量在link函数中?你认为我可以使用它来设置此指令的模板吗?或者我必须在link函数中返回它?抱歉,我在angularjs中是非常新的。模板通常是指令元素的子元素。Angular将自动编译和链接模板,并将其添加为yo的子元素ur指令元素。可以动态编译和链接HTML片段,但是如果你可以使用Angular的模板机制,你应该这样做。我知道了。非常感谢。我只有一个问题。我想在指令中添加css块,因为我以前无法定义它,它是基于变量nb_msg的:@keyframes myAnimat离子,百分比取决于nb_msg。例如:如果nb_msg=2,它必须是0%,50%,100%;nb_msg=3;0%30%50%70%100%。这就是为什么我需要在上面编写模板来帮助我添加css块。那么我可以在指令中创建这个css块吗?我该怎么做?非常感谢!!!