2016-12-01 112 views
-1

在下面的代码从我的应用程序,下拉没有得到与范围数据更新。我该如何做这项工作?我需要将下拉选项从父控制器传递给子控制器。我得到[$ injector:modulerr]错误。ng选项不更新选择标签

<div ng-app="myApp" ng-controller="parentCtrl as pt"> 
    <button ng-click="pt.callChild()">Change Dropdown</button> 
    <div ng-controller="childCtrl as ct"> 
     <select ng-model="ct.selectedName" ng-options="item for item in ct.names"> 
     </select> 
    </div> 
</div> 

JS:

var app = angular.module('myApp', []); 

app.controller('parentCtrl', function ($scope) { 
    var vm = this; 
    var newArray = ["Steve", "Jony"]; 
    vm.callChild = function() { 
    $scope.$broadcast('someEvent', newArray); 
    }; 
}); 

app.controller('childCtrl', function ($scope) { 
    var vm = this; 
    vm.names = ["Emil", "Tobias", "Linus"]; 

    $scope.$on('someEvent', function (e, newArray) { 
     vm.names = newArray; 
    }); 
}); 

这里是fiddle

+0

如果初始绑定不工作,这并不奇怪,整个事情是行不通的。你能发布整个错误信息吗? – valepu

+0

您可以通过在小提琴中打开控制台来查看消息。但是在这里发布它:VM66 angular.min.js:6未捕获的错误:[$ injector:modulerr] http://errors.angularjs.org/1.4.8/$injector/modulerr?p0=myApp&p1=Error%3A %2 ... ogleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.4.8%2Fangular.min.js%3A20%3A274)(...) – maverick

+0

对不起,当我写评论时没有注意到提琴 – valepu

回答

1

该代码工作正常,我已合并角1.5版。

请参阅plnkr here

<head> 
    <meta charset="utf-8" /> 
    <title>AngularJS Plunker</title> 
    <script> 
    document.write('<base href="' + document.location + '" />'); 
    </script> 
    <link rel="stylesheet" href="style.css" /> 
    <script data-require="[email protected]" src="https://code.angularjs.org/1.5.8/angular.js" data-semver="1.5.8"></script> 
    <script src="app.js"></script> 
</head> 



<div ng-app="myApp" ng-controller="parentCtrl as pt"> 
    <button ng-click="pt.callChild()">Change Dropdown</button> 
    <div ng-controller="childCtrl as ct"> 
    <select ng-model="ct.selectedName" ng-options="item for item in ct.names"> 
    </select> 
    </div> 
</div> 

</html>