带有$ scope数据绑定的angularjs只运行一次

时间:2016-04-05 13:56:17

标签: angularjs angularjs-bindings

我有一个带有选择框的表单。它填充了来自JSON的数据,其中每行有许多键。我的想法是在select上显示Description字段,在ID上显示track,在label中显示其他值。

这是我的代码:

                <div>
                    <label>Level:</label>
                    <div><select ng-model="levelModel" ng-options="level.code for level in levels track by id" required></select></div>
                    <label>name:{{levelModel.name}}</label>
                    <label>desc:{{levelModel.desc}}</label>
                </div>

这是JSON

    levels = [
        {id:1, code:"a-code", name:"a-name", desc:"a-desc"},
        {id:2, code:"b-code", name:"b-name", desc:"b-desc"},
        {id:3, code:"c-code", name:"c-name", desc:"c-desc"} ]

我的问题在于更改选择框上的数据,数据绑定仅在分配标记init数据而不是选定数据时起作用,所有其他时间绑定都不起作用。

我认为原因是我正在注入$ scope。我已经阅读了一些关于使用$ scope的指南。$ apply但是如果我尝试使用$ scope。$在我的控制器中应用这样

$scope.$apply(function(){
    $scope.levelModel.name = "test"; })

几秒钟后我收到 $ rootScope:inprogr错误

这是我的app.js路线

app.config(['$routeProvider',function($routeProvider){
        $routeProvider
            .when("/report",{
                          templateUrl:"/reportV.html",
                          controller:"reportController",
                          resolve:{
                                   levels: function(selectSrv){
                                       return selectSrv.select(table); } } })
            .otherwise({redirectTo:'/'});

这是我的控制器

app.controller("reportController", ["$scope", "levels", function($scope,levels){

    $scope.levels = levels.data;

我该如何解决?

P.S。我的代码被简化,视图被路由并且在内部解析我运行一些服务来从db

接收数据

0 个答案:

没有答案