2013-07-05 118 views
1

无法使用anuglar js更新下拉列表更改指令。 这里是我的应用程序代码angularjs无法更新下拉列表更改指令

HTML代码

<div ng-app="myApp" ng-controller="MyCtrl"> 
    <select ng-model="opt" ng-options="font.title for font in fonts" ng-change="change(opt)"> 
    </select> 
    <p> 
     {{opt}}</p> 
    <br /> 
    <h3> 
     Text Is 
    </h3> 
    <div id="tstDiv" testdir ct="ct"> 
    </div> 
</div> 

控制器和指令代码

angular.module("myApp", []).controller("MyCtrl", function ($scope) { 
     $scope.fonts = [ 
    { title: "Arial", text: 'Url for Arial' }, 
    { title: "Helvetica", text: 'Url for Helvetica' } 
]; 
     $scope.opt = $scope.fonts[0]; 
     $scope.change = function (option) { 
      $scope.opt = option; 
     } 
    }) 
     .directive("testDir", function ($timeout) { 
      return { 
       restrict: 'A', 
       scope: { 
        ct: '=ct' 
       }, 
       link: function ($scope, $elm, $attr) { 
        document.getElementById('tstDiv').innerHTML = $scope.selectedTitle; 
       } 
      }; 
     }); 

这里是小提琴http://jsfiddle.net/Cbqju/

+0

您应该使用像TESTDIR的指令,而不是TESTDIR – user700284

+1

我已经为您创建了plunker HTTP ://plnkr.co/edit/KgcCt43qmEBhvGZaIDsp?p = preview –

+0

@Ajaybeniwal几个疑惑,1)为什么你修改div ..

如果有超过1个下拉菜单,我想更新它们的值该div像ddl1.title + ddl2.title在div div – iJade

回答

0

看起来你会想以$观察该变量的变化你的链接功能应该是这个样子

scope: { 
    ct: '=ct', 
    opt: '=opt' 
}, 
link: function ($scope, $elm, $attr) { 
    $scope.$watch('opt', function(newOpt, oldOpt) { 
     document.getElementById('tstDiv').innerHTML = newOpt.title; 
    }); 
} 
+0

尝试但不工作....如果你能提供一个工作fiddle.me新角js – iJade