显示表达式中的值

时间:2016-02-26 10:58:20

标签: angularjs

我是AngularJS的新手,我在下拉列表中显示表达式的值时遇到了问题。 我注意到,当我对这样的值进行硬编码时,它会起作用:

<select ng-model="selectSort" ng-change="changeSort(selectSort)" ng-init="selectSort='0'">
<option value="0">Ändringsdatum, nyast överst</option>
<option value="1">Ändringsdatum, äldst överst</option>
<option value="2">Sidtitel</option>

我想知道的是,我如何从这样的表达式中获取值:

<select ng-model="selectSort" ng-change="changeSort(selectSort)" ng-init="{{SORT_TYPE.date}}">
<option value="{{SORT_TYPE.date}}">Ändringsdatum, nyast överst</option>
<option value="{{SORT_TYPE.dateDesc}}">Ändringsdatum, äldst överst</option>
<option value="{{SORT_TYPE.label}}">Sidtitel</option>

我到处搜寻并尝试了我想到的一切。

修改

angular.module('directives.sort', [])

.constant('SORT_TYPE', {
    date: '0',
    dateDesc: '1',
    label: '2'

})   

 .directive('sort', function (SORT_TYPE) {
     return {
         restrict: 'A',
         templateUrl: '/common/directives/sort/sort.html', 
         link: function (scope, element, attrs) {
             scope.SORT_TYPE = SORT_TYPE;                
         }
     };
 })

/ K

2 个答案:

答案 0 :(得分:0)

我希望你的控制器看起来像这样:

angular
  .module('app')
  .controller('MyCtrl',MyCtrl);

function MyCtrl() {
  var vm = this;
  vm.SORT_TYPE = {
    date: 'some date',
    dateDesc: 'some description',
    label: 'Date'
  };
}

答案 1 :(得分:0)

将代码放入plunker似乎可行。

我将你的模板内联。

我猜你的模板被错误地引用了,或者你的指令使用不正确。

我还删除了你的ng-init,因为这导致了控制台错误。 Ng-init用于评估表达式,其中没有表达式。

您的代码应该与此类似。

https://plnkr.co/edit/5cKQIYzfjRDuBXcpAcyT?p=preview

HTML:

<body>
    <div ng-app="directives.sort">
      <div sort></div>
    </div>
</body>

JS:

angular.module('directives.sort', [])

.constant('SORT_TYPE', {
    date: '0',
    dateDesc: '1',
    label: '2'

})   

 .directive('sort', function (SORT_TYPE) {
     return {
         restrict: 'A',
         template: '<select ng-model="selectSort" ng-change="changeSort(selectSort)" ng-init="{{SORT_TYPE.date}}">'+
'<option value="{{SORT_TYPE.date}}">Ändringsdatum, nyast överst</option>'+
'<option value="{{SORT_TYPE.dateDesc}}">Ändringsdatum, äldst överst</option>'
+'<option value="{{SORT_TYPE.label}}">Sidtitel</option>', 
         link: function (scope, element, attrs) {
             scope.SORT_TYPE = SORT_TYPE;                
         }
     };
 })