簡體   English   中英

Knockout.js:組件ViewModel中的本地可觀察對象

[英]Knockout.js: Local Observables within Component ViewModel

我正在使用敲除組件(通過require.js加載)來創建登錄小部件。

使用Javascript:

ko.components.register('login-widget', {
    viewModel: { require: '/components/login-widget.js' },
    template: { require: 'text!/components/login-widget.html' }
});

function MyViewModel() {
    var self = this;
    self.email = ko.observable();
    self.password = ko.observable();
    self.mode = ko.observable('login');
}

ko.applyBindings(new MyViewModel());

HTML

<div class="container-fluid">
    <h1>Hello world</h1>
    <login-widget params="{ email: email, password: password, mode: mode}"></login-widget>
</div>

組件Javascript

define(['knockout'], function (ko) {
    function LoginWidgetViewModel(params) {
        var self = this;

        self.email = params.email;
        self.password = params.password;

        self.mode = params.mode;
    }
    return LoginWidgetViewModel;
});

組件html代碼段:

 <input type="email" class="form-control" placeholder="email" data-bind="value:email">

一切正常,但是當我嘗試將可觀察對象移動到LoginWidgetViewModel而不是將其作為參數傳遞時,它們無法正確綁定到模型。 所以當我使用

define(['knockout'], function (ko) {
    function LoginWidgetViewModel(params) {
        var self = this;

        self.email = ko.observable();
        self.password = ko.observable();

        self.mode = ko.observable('login');
    }
    return LoginWidgetViewModel;
});

代替:

工作登入

我得到:

無法登入

有什么建議么?

我正在全局加載淘汰賽和require.js,然后在使用require加載視圖模型時,這又在加載另一個淘汰賽實例。 我刪除了不需要的敲除參考,一切都開始按我期望的那樣工作。

使用IssueJS的問題加載敲除組件視圖模型中找到解決方案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM