小编Bas*_*ssT的帖子

使用 getter 对对象应用展开运算符

如果你声明一个带有 getter 的类

class Person {
  constructor(firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
  }

  get fullName() {
    return [this.firstName, this.lastName].join(" ");
  }
}
Run Code Online (Sandbox Code Playgroud)

您可以在实例化新对象后访问 getter

const person = new Person("Jane", "Doe");
console.log(person.fullName); // "Jane Doe"
Run Code Online (Sandbox Code Playgroud)

但这在使用扩展运算符复制对象后将不起作用

const personCopy = { ...person };
console.log(personCopy.fullName); // undefined
Run Code Online (Sandbox Code Playgroud)

我认为这有点令人困惑的语法。

javascript ecmascript-2018

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

让水豚等待元素消失

单击某些元素后,我希望AJAX调用完成后,占位符消失,而另一个元素出现。

find(someLocator).click
expect(page).not_to have_css(disappearingPlaceholderLocator)
expect(page).to have_css(appearingElementLocator)
Run Code Online (Sandbox Code Playgroud)

但是,第一个期望将失败,并且不会执行AJAX调用。

我认为这与该SO问题有某种联系,但我不知道如何解决。

ajax ruby-on-rails capybara poltergeist

5
推荐指数
1
解决办法
4070
查看次数

AngularJS - $ scope的机制.$ watch - 它只是一个观察者模式吗?

我有一些工厂:

.factory("someFactory", function() {

  var someFactory = {};

  someFactory.objects = [
    { name: "obj1" },
    { name: "obj2" }
  ];

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

还有一些控制器,它监视这个工厂对象名称的变化:

.controller("someController", ["someFactory", "$scope", function($scope, someFactory) {

  for (var i = someFactory.values.length - 1; i >= 0; i--) {
    $scope.$watch("someFactory.values[" + i + "].name", function(newVal, oldVal, scope) {
        if(newVal !== undefined) {
            // do something
        }
  });

}]);
Run Code Online (Sandbox Code Playgroud)

我很惊讶这实际上是有效的,我不必单独为我工厂中的每个对象编写代码.我想我很惊讶,因为我对$ scope的实际缺乏了解.如果有人问我,我会告诉他这就像是观察者的好模式.这是一个合适的解释吗?

angularjs angularjs-service angularjs-scope angularjs-controller

4
推荐指数
1
解决办法
2215
查看次数