- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我开始学习 Aurelia,我正在关注 Getting Started他们网站上的指南,但我使用的是 Typescript 而不是 Javascript。一切都很好,但我在使 @bindable
装饰器在 nav-bar
组件中工作时遇到问题。
我的设置如下:
这是我的 nav-bar.ts 文件的内容:
import {bindable} from "aurelia-framework";
import {Router} from "aurelia-router";
export class NavBar {
@bindable router: Router = null;
}
我有一个 tsconfig.json
文件如下:
{
"compilerOptions": {
"noImplicitAny": false,
"noEmitOnError": false,
"removeComments": false,
"target": "es5",
"module": "system",
"experimentalDecorators": true,
"emitDecoratorMetadata": true
}
}
如果我让 VS 转译 Typescript 文件,生成的 nav-bar.js 文件如下所示:
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") return Reflect.decorate(decorators, target, key, desc);
switch (arguments.length) {
case 2: return decorators.reduceRight(function(o, d) { return (d && d(o)) || o; }, target);
case 3: return decorators.reduceRight(function(o, d) { return (d && d(target, key)), void 0; }, void 0);
case 4: return decorators.reduceRight(function(o, d) { return (d && d(target, key, o)) || o; }, desc);
}
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};System.register(['aurelia-framework', 'aurelia-router'], function(exports_1) {
var aurelia_framework_1, aurelia_router_1;
var NavBar;
return {
setters:[
function (_aurelia_framework_1) {
aurelia_framework_1 = _aurelia_framework_1;
},
function (_aurelia_router_1) {
aurelia_router_1 = _aurelia_router_1;
}],
execute: function() {
NavBar = (function () {
function NavBar() {
this.router = null;
}
__decorate([
aurelia_framework_1.bindable,
__metadata('design:type', aurelia_router_1.Router)
], NavBar.prototype, "router");
return NavBar;
})();
exports_1("NavBar", NavBar);
}
}
});
我也试过使用 gulp-typescript
结果是一样的。使用这两种解决方案,绑定(bind)不起作用并且导航栏为空。
如果我改用 gulp-babel
,生成的 nav-bar.js 文件如下所示:
System.register(["aurelia-framework", "aurelia-router"], function (_export) {
"use strict";
var bindable, Router, NavBar;
var _createDecoratedClass = (function () { function defineProperties(target, descriptors, initializers) { for (var i = 0; i < descriptors.length; i++) { var descriptor = descriptors[i]; var decorators = descriptor.decorators; var key = descriptor.key; delete descriptor.key; delete descriptor.decorators; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor || descriptor.initializer) descriptor.writable = true; if (decorators) { for (var f = 0; f < decorators.length; f++) { var decorator = decorators[f]; if (typeof decorator === "function") { descriptor = decorator(target, key, descriptor) || descriptor; } else { throw new TypeError("The decorator for method " + descriptor.key + " is of the invalid type " + typeof decorator); } } if (descriptor.initializer !== undefined) { initializers[key] = descriptor; continue; } } Object.defineProperty(target, key, descriptor); } } return function (Constructor, protoProps, staticProps, protoInitializers, staticInitializers) { if (protoProps) defineProperties(Constructor.prototype, protoProps, protoInitializers); if (staticProps) defineProperties(Constructor, staticProps, staticInitializers); return Constructor; }; })();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineDecoratedPropertyDescriptor(target, key, descriptors) { var _descriptor = descriptors[key]; if (!_descriptor) return; var descriptor = {}; for (var _key in _descriptor) descriptor[_key] = _descriptor[_key]; descriptor.value = descriptor.initializer ? descriptor.initializer.call(target) : undefined; Object.defineProperty(target, key, descriptor); }
return {
setters: [function (_aureliaFramework) {
bindable = _aureliaFramework.bindable;
}, function (_aureliaRouter) {
Router = _aureliaRouter.Router;
}],
execute: function () {
NavBar = (function () {
var _instanceInitializers = {};
function NavBar() {
_classCallCheck(this, NavBar);
_defineDecoratedPropertyDescriptor(this, "router", _instanceInitializers);
}
_createDecoratedClass(NavBar, [{
key: "router",
decorators: [bindable],
initializer: function initializer() {
return null;
},
enumerable: true
}], null, _instanceInitializers);
return NavBar;
})();
_export("NavBar", NavBar);
}
};
});
使用 gulp-babel 方法可行,但我想这不一定是正确的选择,因为我不认为 babel 是为了转译 Typescript,所以我以后在编写一些高级代码时可能会遇到问题。
有什么办法可以让它使用官方的 Typescript 转译器工作吗?
有人成功了吗?
最佳答案
请尝试使用 module: "amd"而不是 module: "system"
关于typescript - Aurelia + typescript + @bindable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32156334/
我发现当我为它定义一个@bindable 属性和一个 propertyChanged 处理程序时,它有时会在自定义组件的 bind() 方法之前被调用,有时则不会。 https://gist.run/
我正在创建一个具有 ContentView 的控件(源自 Frame ) field : public class SelectionFrame : ContentView { Frame f
我开始学习 Aurelia,我正在关注 Getting Started他们网站上的指南,但我使用的是 Typescript 而不是 Javascript。一切都很好,但我在使 @bindable 装饰
我遇到了一些奇怪的事情,但也许其他人以前遇到过。 我有一个基类,它不扩展任何东西。让我们称之为... public class FooBar { //... } 但我想绑定(bind)它暴露的
意义 。 . .我见过将组件绑定(bind)到 [Bindable] dataProvider 的案例。当我更新 dataProvider 中的数据时,组件不会立即反射(reflect)更改。我需要做
[Bindable] /** * Display output of video device. */ public var videoLocal : Video; 有谁知道
我正在使用数据绑定(bind)库通过方法使用属性 setter 来更新 TextView 的可见性 TextView : 和可绑定(bind) View 模型方法“kalase”: @Bindabl
我是数据绑定(bind)的新手,这是我的代码,但我在构建时遇到了这个错误 class DatabindingViewModel :ViewModel() { val currentFruitName:
从我对 Flex 的一点经验中,我了解了可绑定(bind)变量,例如,这样文本元素的内容会随着变量的值而改变。 我想知道是否可以在 JavaScript 中做这样的事情。例如,假设我有一个 我想包含文
我将 aurelia 与 TypeScript (v 1.5.4) 结合使用。我正在使用 https://github.com/aurelia/<>/blob/master/dist/amd/aure
我正在努力理解当 Bindable 对象发生更改时如何运行方法。这是我到目前为止的代码: 但是,由于某种原因, fetchFoods 方法永远不会因为 searchText 更改而被调用,我似乎无法理
我需要编写一个看起来像 TextBox 的自定义控件,它包含一个名为 Refresh() 的方法,其主要目的是清除文本并回滚一些其他值。 该方法应以某种方式变得可绑定(bind),以便其他人可以将其
代码: App.js export class App { constructor() { this.widgets = [{ name: 'zero'}, {name: 'one'},
我是 android 数据绑定(bind)的新手,我正在查看代码,如下所示 @get:Bindable var userIds: MutableList = mutableListOf()
在 Xamarin Forms 中,我试图创建一个带有属性的 xaml 转换器。 这将用于,例如,基于隐藏属性的代码以不同方式显示列表中的值。 我的代码基于此:https://stackoverflo
可绑定(bind) LINQ 和连续 LINQ 之间的主要区别是什么? •可绑定(bind)LINQ:www.codeplex.com/bindablelinq • 连续 LINQ:www.codep
绑定(bind)不适用于图像标记。当我调试时,我看到Extension类中Source的值始终为null?但标签的内容不为空。 Xaml 图像资源扩展 // You exclude the 'Ex
问题已解决,见下文 问题 我在 Flex Builder 3 中工作,我有两个 ActionScript 3 类(ABC 和 XYZ)和一个 Flex MXML 项目(main.mxml)。我有一个
我继承了一个 Adobe AIR 应用程序,并试图通过 Flash Builder 4.5 对其进行调试。在 Flash Builder 中,当我查看其中一个 MXML 文件时,我看到每次使用 [
我试图将过滤器数组传递给多个 View ,但过滤不起作用。如果我删除过滤器,您可以将数组传递给下一个 View ,但这会在 ForEach 循环期间导致另一个错误。我已经在下面发布了所有代码。 有谁知
我是一名优秀的程序员,十分优秀!