相关疑难解决方法(0)

如何在ng-repeat中将对象属性别名为变量

我正在重复一个对象数组,我希望循环中的变量只能引用每个对象的一个​​属性.

简化数据示例:

var data = [
  {
    'name': {
      'first': 'John',
      'last': 'Johnson'
    }
    'age': 45
  },
  {
    'name': {
      'first': 'Larry',
      'last': 'Wilson'
    }
    'age': 45
  }
]
Run Code Online (Sandbox Code Playgroud)

我可以:

<div ng-repeat="person in data">{{ person.name.first }}</div>

但我更喜欢做的只是专注于我正在使用的对象的唯一部分,并执行以下操作:

<div ng-repeat="person.name in data as name">{{ name.first }}</div>

但这似乎不起作用 - 这目前可能吗?

javascript angularjs angularjs-ng-repeat

19
推荐指数
1
解决办法
1万
查看次数

AngularJS自定义指令双向绑定

如果我有一个没有模板的AngularJS指令,并且我希望它在当前作用域上设置属性,那么最好的方法是什么?

例如,一个计算按钮点击次数的指令:

<button twoway="counter">Click Me</button>
<p>Click Count: {{ counter }}</p>
Run Code Online (Sandbox Code Playgroud)

使用指令将点击计数分配给双向属性中的表达式:

.directive('twoway', [
'$parse',
  function($parse) {
    return {
      scope: false,
      link: function(scope, elem, attrs) {
        elem.on('click', function() {
          var current = scope.$eval(attrs.twoway) || 0;
          $parse(attrs.twoway).assign(scope, ++current);
          scope.$apply();
        });
      }
    };
  }
])
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?从我所读到的,一个孤立的范围将是矫枉过正,但我​​需要一个儿童范围?是否有更简洁的方法来回写指令属性中定义的范围变量而不是使用$parse.我觉得我让这个太难了.

Full Plunker 在这里.

javascript angularjs angularjs-directive

15
推荐指数
2
解决办法
6万
查看次数

安全地访问Javascript嵌套对象

我有基于json的数据结构,对象包含嵌套对象.为了访问特定的数据元素,我一直在链接对象属性的引用.例如:

var a = b.c.d;
Run Code Online (Sandbox Code Playgroud)

如果未定义b或bc,则会因错误而失败.但是,我希望得到一个值,如果它存在,否则只是未定义.在不检查链中的每个值是否存在的情况下,最好的方法是什么?

我想保持这种方法尽可能通用,所以我不必添加大量的辅助方法,如:

var a = b.getD();
Run Code Online (Sandbox Code Playgroud)

要么

var a = helpers.getDFromB(b);
Run Code Online (Sandbox Code Playgroud)

我也想尝试避免try/catch构造,因为这不是一个错误所以使用try/catch似乎是错误的.这合理吗?

有任何想法吗?

javascript node.js

14
推荐指数
4
解决办法
4804
查看次数

不使用eval,按字符串名称访问命名空间的javascript对象

我遇到了需要从服务器访问javascript对象的情况.服务器返回函数或对象的字符串名称,并且基于其他元数据,我将以不同方式评估对象.

最初我正在评估(eval([string])),一切都很好.最近我更新了函数,以免eval安全性让人高枕无忧,我遇到了命名空间对象/函数的问题.

具体来说,我尝试eval([name])用a 替换a window[name]来通过全局对象vs的方括号语法访问对象eval.

但是我遇到了命名空间对象的问题,例如:

var strObjName = 'namespace.serviceArea.function';
// if I do
var obj = eval(strObjName); // works

// but if I do
var obj = window[strObjName]; // doesn't work
Run Code Online (Sandbox Code Playgroud)

任何人都可以提出一个很好的解决方案,以避免使用eval命名空间字符串?

javascript namespaces eval

13
推荐指数
2
解决办法
6213
查看次数

Javascript/JSON获取给定子节点的路径?

您如何获得对象的给定子节点的JSON路径?

例如:

var data = {
    key1: {
        children: {
            key2:'value',
            key3:'value',
            key4: { ... }
        }, 
    key5: 'value'
}
Run Code Online (Sandbox Code Playgroud)

给出了一个引用key4的变量.现在我正在寻找绝对路径:

data.key1.children.key4
Run Code Online (Sandbox Code Playgroud)

有没有办法在JS中完成这项工作?

先感谢您.

javascript xpath json

10
推荐指数
2
解决办法
2万
查看次数

使用括号表示法访问嵌套属性

说我有 var input = {'name':'john'}

我愿意 input['name'] = 'James'

它变成了var input = {'name':'john'}但我可以用点传递值来访问嵌套属性吗?

喜欢

var input = {"name":"john","grades":"{english:"A","math":"C"}"}

我无法通过执行input["grades.math"].

javascript ecmascript-6

10
推荐指数
1
解决办法
1万
查看次数

在Javascript中展平第n个嵌套数组的迭代解决方案

任何人都可以向我展示以下问题的迭代解决方案吗?我递归地解决了它,但是在迭代解决方案上挣扎.(Facebook技术访谈问题)

Input: [1, {a: 2}, [3], [[4, 5], 6], 7]
Output: [1, {a: 2}, 3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)

解决方案必须适用于第n个嵌套数组元素(即如果有人修改了上面示例中的数组值/位置,它仍然可以工作)

递归解决方案:

var flatten = function(input) {
    var result = [];

    input.forEach(function(element) {
        result = result.concat(Array.isArray(element) ? flatten(element) : element);
    });

    return result;
}
Run Code Online (Sandbox Code Playgroud)

javascript arrays function

9
推荐指数
2
解决办法
2931
查看次数

Javascript:将点分隔的字符串转换为嵌套的对象值

我有一堆对象属性以点分隔的字符串形式出现"availability_meta.supplier.price",我需要为其分配相应的值record['availability_meta']['supplier']['price']等等.

并非所有东西都是3级深度:许多只有1级深度,而且许多深度超过3级.

有没有一种很好的方法在Javascript中以编程方式分配?例如,我需要:

["foo.bar.baz", 1]  // --> record.foo.bar.baz = 1
["qux.qaz", "abc"]  // --> record.qux.qaz = "abc"
["foshizzle", 200]  // --> record.foshizzle = 200
Run Code Online (Sandbox Code Playgroud)

我想我可以一起破解某些东西,但我没有任何好的算法,所以会很感激建议.我正在使用lodash,如果它有用,并对其他可以快速完成此工作的库开放.

编辑它在后端并且不经常运行,因此没有必要优化大小,速度等.实际上代码可读性对于未来的开发者来说将是一个加分.

编辑2这与引用的副本不同.也就是说,我需要能够为同一个对象多次执行此分配,并且"重复"答案将每次只覆盖子键.请重新开启!

javascript arrays object lodash

7
推荐指数
3
解决办法
5007
查看次数

如何在angular的$ parse中赋值

我有一个字符串引用我的一个范围值,如下所示:

var reference_string = "form.name";
Run Code Online (Sandbox Code Playgroud)

我想为它引用的对象赋值:

$scope.form.name = 'newvalue';
Run Code Online (Sandbox Code Playgroud)

环顾四周,我找到了两种可能的解决方案:使用普通JS或使用angular $ parse函数.

但是,似乎$ parse函数只返回值.我可以这样做,以便我可以分配一个新值吗?

即.我想做点什么

var reference_string = "form.name";
var reference = getReference($scope, reference_string); // ideally using an angular in-built function like $parse
reference = 'newvalue'; // should have the same effect as $scope.form.name = 'newvalue';
Run Code Online (Sandbox Code Playgroud)

angularjs

7
推荐指数
1
解决办法
1万
查看次数

使用 MaterialUI DataGrid 显示嵌套对象值

大家好 Stackoverflow,我正在尝试从 API 获取数据并将其导入到 React js 中的数据网格中。

\n

以下是我从 API 获取的数据格式。

\n
{data: Array(200)}\ndata\n: \n(200) [{\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs material-ui

6
推荐指数
1
解决办法
1805
查看次数