相关疑难解决方法(0)

Javascript Funky阵列不幸事件

function a() {
  var b = ["b"];
  console.log(b);
  //console.log(b.slice());
  b = b.push("bb"); 
}
a();
Run Code Online (Sandbox Code Playgroud)

在一个"完美"的世界里,你会认为它console.log会表现出来["b"],但是["b", "bb"]尽管"bb"直到事后才被推迟,但它仍然显示出来.

如果你这样做console.log(b.slice());,你将获得所需的结果["b"].这是为什么?这种并发症背后的原因是什么?我只是想更好地理解这一点,所以我可以更好地避免它发生.

*注意我在最近的一个问题中遇到了同样的问题,但这是一个更简洁的例子.@RightSaidFred引领我到这一点,到目前为止一直是一个巨大的帮助.

编辑

JSFiddle上的Runnable示例

javascript arrays

21
推荐指数
2
解决办法
622
查看次数

UI路由器,在服务中使用stateparams

我有这种状态:

  .state('admin.category',{
    url: '/category',
    templateUrl:'views/admin.category.html',
    resolve:{
      category: ['CategoryLoader', function(CategoryLoader){
        return new CategoryLoader();
      }]
    },
  })
Run Code Online (Sandbox Code Playgroud)

这是我所解决的服务。

.factory('CategoryLoader',['Category', '$state', '$q',
  //console.log($state)
  function(Category, $state, $q){
    return function(){
      var delay = $q.defer();
      Category.get({cat_id:$state.params.id}, //not working
        function(category){
          delay.resolve(category);
        },
       function(){
         //delay.reject('Unable to fetch category ' + $state.params.cat_id)
      });
      return delay.promise;
    }
}]);
Run Code Online (Sandbox Code Playgroud)

如果将$ state.params.id更改为数字,则一切正常。如果在服务中管理$ state,我将获得所有信息,包括参数。但我似乎无法使用它。使用我在其他项目中使用过的$ route.current.params.id应该是等效的。我如何使用ui-router做同样的事情?

更新:更多信息

父状态:

  .state('admin',{
    abstract: true,
    url: '/admin',
    templateUrl:'views/admin.html'
  })
Run Code Online (Sandbox Code Playgroud)

类别工厂:

  factory('Category', function($resource){
    return $resource('/api/category/byId/:id/', {id: '@id'});
  })
Run Code Online (Sandbox Code Playgroud)

如果需要的话,我会摆一个小提琴

angularjs angular-ui-router

3
推荐指数
1
解决办法
7052
查看次数

标签 统计

angular-ui-router ×1

angularjs ×1

arrays ×1

javascript ×1