我对Angular.js有点了解,但我现在想自己教Dart和Angular.dart.不过,我有点好奇两者之间的区别是什么.Angular.dart教程明确表示不会比较这两者.使用过两者的人是否都对差异有所了解?
我们正在制作一个Angular2应用程序,我们希望能够以某种方式创建一个全局CSS变量(并在分配变量时更改属性的值).
我们使用了Polymer一段时间(现在我们正在切换到Angular2组件)并且我们使用了CSS属性(Polymer有一些polyfill),我们只使用了更新样式Polymer.updateStyles().
有什么方法可以实现类似的功能吗?
编辑:
我们想要类似于Sass color: $g-main-color或CSS自定义属性的东西color: var(--g-main-color),每当我们决定更改属性的值时,例如updateVariable('g-main-color', '#112a4f')它会动态地更新所有值的值.所有这一切都在应用程序运行时.
编辑2:
我想在我的CSS的不同部分(host,child element ...)中使用一些全局CSS变量,并且能够立即更改值 - 所以如果我更改my-color变量,它会在应用程序的任何位置发生变化.
我将使用Sass语法为例:
:host { border: 2px solid $my-color }
:host .some-label { color: $my-color }
Run Code Online (Sandbox Code Playgroud)
可以使用Angular管道之类的东西吗?(但它应该只适用于HTML)
:host { border: 2px solid {{ 'my-color' | cssvariable }} }
:host .some-label { color: {{ 'my-color' | cssvariable }} }
Run Code Online (Sandbox Code Playgroud) 假设我有很大的单元格网格,我想添加数据行和数据col属性值并从模型绑定.如何从angular2(Dart中的beta0)绑定数据行.
使用data-row ="{{boundVal}}绑定"似乎不起作用.(输出html中没有数据属性)
例如.
<table>
<tr *ngFor="#row of rows" >
<td *ngFor="#cell of row.cells" data-row="{{row.index}}" data-col="{{cell.index}}" >
</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud) 我想基于从AJAX调用接收的一些信息动态构建组件树.
如何以编程方式从其他组件内部向DOM添加组件?我有<outer-comp>,我想,基于一些逻辑,插入一个<inner-comp>.以下代码只是将元素插入<inner-comp></inner-comp>DOM,而不是实际<inner-comp>表示.
@NgComponent(
selector: 'outer-comp',
templateUrl: 'view/outer_component.html',
cssUrl: 'view/outer_component.css',
publishAs: 'outer'
)
class AppComponent extends NgShadowRootAware {
void onShadowRoot(ShadowRoot shadowRoot) {
DivElement inner = shadowRoot.querySelector("#inner");
inner.appendHtml("<inner-comp></inner-comp>");
}
}
Run Code Online (Sandbox Code Playgroud)
更新: 我设法以下列方式正确渲染内部组件,但我仍然不确定这是否正确:
class AppComponent extends NgShadowRootAware {
Compiler compiler;
Injector injector;
AppComponent(this.compiler, this.injector);
void onShadowRoot(ShadowRoot shadowRoot) {
DivElement inner = shadowRoot.querySelector("#inner");
inner.appendHtml("<inner-comp></inner-comp>");
BlockFactory template = compiler(inner.nodes);
var block = template(injector);
inner.replaceWith(block.elements[0]);
}
Run Code Online (Sandbox Code Playgroud)
}
我想知道为什么Polymer元素需要在自定义元素名称中使用破折号,就像<my-component>Angular组件不需要这样,特别是Angular组件也使用ShadowDOM.
**编辑**它似乎甚至没有被建议在Angular中做好.
我在Angular 2 Dart中使用Router和RouteParams.
我的路线如下:
@RouteConfig(const [
const Route(path: '/', component: ViewLanding, as: 'home'),
const Route(path: '/landing', component: ViewLanding, as: 'landing'),
const Route(path: '/flights', component: ViewFlights, as: 'flights'),
const Route(path: '/picker/:cityDepart/:cityArrival/:dateDepart/:dateArrival/', component: ViewFlights, as: 'picker'),
const Route(path: '/order/:id/:level/:dateDepart/:dateArrival/', component: ViewOrder, as: 'order'),
const Route(path: '/order/complete', component: ViewComplete, as: 'orderComplete')
])
Run Code Online (Sandbox Code Playgroud)
//应用程序入口点:
void main() {
print('-- Main.dart 2 --');
bootstrap(Tickets, [
routerInjectables,
client_classes,
// The base path of your application
bind(APP_BASE_HREF).toValue('/'),
// uncomment this if you want to use '#' in your …Run Code Online (Sandbox Code Playgroud) 以下代码无效,因为该集合包含dupes:
<div ng-repeat="value in [4, 4]"></div>
Run Code Online (Sandbox Code Playgroud)
我认为以下内容应该有效,但遗憾的是不起作用:
<div ng-repeat="value in [4, 4] track by $index"></div>
Run Code Online (Sandbox Code Playgroud)
那是一个错误吗?
有没有办法在ng-repeat包含欺骗的集合中使用?
提前致谢,
奥利维尔
一年后调查Dart,我没有看到任何全面的小部件库.我在GitHub上看到了KevMoo的Widget.Dart项目,但实际上没有一个小部件能够正常工作.我目前在我的项目中使用AngularJS,并且拥有一组很棒的库,例如Boostrap UI和ng-grid,这使我能够在不重新创建轮子的情况下提高工作效率.Dart中有这样的东西吗?
angular-dart ×10
dart ×9
angular ×3
angularjs ×3
dart-polymer ×2
dart-pub ×1
flutter ×1
javascript ×1
polymer ×1
shadow-dom ×1