如果你声明一个带有 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)
我认为这有点令人困惑的语法。
单击某些元素后,我希望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问题有某种联系,但我不知道如何解决。
我有一些工厂:
.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