css - JsViews css-tag 中的逻辑

标签 css jsrender jsviews

我试图将逻辑放在 jsViews 的 data-link 中的 css-width 中。以下两种方法无效:

{{for Items}}
    ...
    <td id="show-keys" data-link="css-width{~root.ShowKeys ? '200px' : '400px'}">

{{for Items}}
    ...
    <td id="show-keys" data-link="css-width{:~keysWidth()}">
...

<script type="text/javascript">
    ...
    var app = {
        ...
        helpers: {
            showKeys: function () {
                //debugging shows that this never gets fired
                return app.ShowKeys ? '400px' : '100px';
            }

我如何适本地将 css 值基于属性,以便它动态变化?

最佳答案

这是一个显示了几个变体的 jsfiddle:http://jsfiddle.net/BorisMoore/GZPvZ/

您的第一个表达式缺少 :

data-link="css-width{~root.ShowKeys ? '200px' : '400px'}"

应该是

data-link="css-width{:~root.ShowKeys ? '200px' : '400px'}"

对于第二种方法,使用助手,除了助手的命名(我认为你的意思是 keysWidth - 正如@BKimmel 指出的那样) - 你需要声明一个事实它是一个依赖于 ~root.showKeys 的计算可观察对象 - 你可以这样做:

function keysWidth() {
    return app.showKeys ? '400px' : '100px';
}

keysWidth.depends = "~root.showKeys"; // or you can write ... = [app, "showKeys"]

或者,您可以不声明依赖项,而是将其作为参数传递:

data-link="css-width{:~keysWidth3(~root.showKeys)}"

Helpers 可以全局声明,或通过链接调用传入。

有关详细信息,请参阅 jsfiddle...

更新: 现在有一些涵盖 CSS 和类绑定(bind)的新示例。有一个 tutorial sequence on data-linking , 其中包括 this page关于数据链接类,this关于切换类,和this one关于链接到 CSS 属性。

关于css - JsViews css-tag 中的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18405789/

相关文章:

css - 如何在 HTML5 中并排使用 iframe 时删除空格

javascript - 预编译jsrender模板

JsRender - 检查嵌套值是否为空

jquery - 当底层数据发生变化时,JSViews 模板不会更新

javascript - 使用 View 名称或占位符名称获取数据对象

javascript - 使用 JsViews 进行汇总值计算

javascript - 按钮点击触发的jQuery幻灯片动画

c# - 使用 CSS 内联更改 HTML 以使用数据 Url

css - IE 10+ 特定的 css 规则在 IE 中不优先

javascript - jQuery/jsrender - 未捕获 RangeError : Maximum call stack size exceeded