如何将模型的值存储在变量中?

时间:2014-04-23 08:03:06

标签: angularjs angularjs-directive angularjs-scope angular-ngmodel

我正在创建一个指令,我想在其中比较存储在模型中的值(比如" name"作为模型,它有价值" Angular") 存储在变量中。

我尝试了类似下面的内容,

var nameValue=name;

但它(nameValue)没有值" Angular"

Example:

app.directive('kmRadio', function() {

  return{
    restrict:'E',
    compile: function(element,attrs) {
      var model=ngModelName;     

      console.info(attrs.kmModel);
      console.info("{{'+attrs.kmModel+'}}");

      if(attrs.kmTitle==model) {
        previewString="<input type="+"radio"+" checked>";
      }
      else {
        previewString="<input type="+"radio"+">";
      }

      var htmlText=''+previewString+''+

        element.replaceWith(htmlText);
    }
  }
}) 

任何人都可以告诉我如何检索存储在模型中的值(ng-model)

2 个答案:

答案 0 :(得分:0)

您可以将指令范围中的属性链接到具有scope属性的父级。可在此处找到详细说明:What is the difference between '@' and '=' in directive scope in AngularJS?

实质上是添加

返回{     限制:&#39; E&#39 ;,     范围: {        kmModel:&#39; = kmModel&#39;     }     compile:function(element,attrs){       var model = ngModelName;

  console.info(attrs.kmModel);
  console.info("{{'+attrs.kmModel+'}}");

  if(attrs.kmTitle==model) {
    previewString="<input type="+"radio"+" checked>";
  }
  else {
    previewString="<input type="+"radio"+">";
  }

  var htmlText=''+previewString+''+

    element.replaceWith(htmlText);
}

}

可以解决您的问题。

答案 1 :(得分:0)

您可以使用ng-checked和链接功能简化一些事情:

app.directive('kmRadio', function() {
  return {
    restrict: 'E',
    scope: true,
    replace: true,
    template: "<input type='radio' ng-checked='title == model' />",
    link: function(scope, element, attrs) {
      scope.model = scope.$eval(attrs.kmModel);
      scope.title = attrs.kmTitle;

      console.info('attrs.kmModel: ', attrs.kmModel);
      console.info('scope.$eval(attrs.kmModel):', scope.model);
    }
  }
})

这是一个有效的演示:http://plnkr.co/edit/owTLnPUbbZIhwUtfoivt?p=preview