Angular 属性指令值

8

我想直接从一个属性指令中获取值:

 <form cronos-dataset="People as p">
     Form Content
 </form>

在我的JS中,我尝试:

app.directive('cronosDataset',[function() {
  return {
    restrict: 'A',
    controller: 'CronosGenericDatasetController',
    scope: {
        "cronos-dataset" : '@'
    }
  };
}])

.controller("CronosGenericDatasetController",['$scope', function($scope) {
    alert($scope["cronos-dataset"]);
}]);

我想要警报"People as p"字符串,但是我得到了undefined。这是正确的路径还是我应该采用不同的方法?

1
你需要在控制器内使用 $timeout(function(){alert($scope["cronos-dataset"]);}) - Pankaj Parkar
你能创建一个 Plnkr/Fiddle 吗?你的代码应该可以正常工作。 http://plnkr.co/edit/2gdUSFoWXUTJAONqGLqn?p=preview - Vinay K
2个回答

8

在作用域声明中,您应该使用驼峰命名法

app.directive('cronosDataset',[function() {
  return {
    restrict: 'A',
    controller: 'CronosGenericDatasetController',
    scope: {
        cronosDataset : '@'
    }
  };
}])

这是一个演示,展示了不同的变化。点击以下链接查看: http://plnkr.co/edit/G6BiGgs4pzNqLW2sSMt7?p=preview

5
创建一个链接函数替代:
app.directive('cronosDataset',[function() {
  return {
    scope: {},
    restrict: 'A',
    link: function (scope, elem, attrs) {
        alert(attrs.cronosDataset);
    }

他想在控制器内调用,而不是在链接函数中调用吗? - Pankaj Parkar
那个警告!谢谢,但我需要在控制器内调用它! - nanndoj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接